Python加密Fernet:解密期间出错

2024-09-30 06:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

密钥以以下格式生成并保存在env文件中:

密钥=KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI=

    def encrypt_message(message):
        key = app.config['SECRET_KEY']
        encoded_message = message.encode()
        f = Fernet(key)
        encrypted_message = f.encrypt(encoded_message)
    
        print(encrypted_message)
    
    
    def decrypt_message(encrypted_message):
        key = app.config['SECRET_KEY']
        f = Fernet(key)
        decrypted_message = f.decrypt(encrypted_message)
    
        print(decrypted_message.decode())

加密工作正常,没有错误。但是,在解密过程中出现以下错误:

  1. 当密钥作为byteString持久化时:

    b'KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI='

    ValueError: Fernet key must be 32 url-safe base64-encoded bytes

  2. 当密钥作为字符串持久化时

    KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI=

    TypeError: token must be bytes


Tags: keyconfigappmessagesecretdef密钥encrypted
1条回答
网友
1楼 · 发布于 2024-09-30 06:26:43

解决方案:对密钥和消息进行编码

def decrypt_message(encrypted_message):
    key = app.config['SECRET_KEY']         # KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI=
    f = Fernet(key.encode())               #Encode key
    decrypted_message = f.decrypt(encrypted_message.encode())  #Encode Message

    print(decrypted_message.decode())

相关问题 更多 >

    热门问题