繁体   English   中英

Python Cryptography Fernet:解密时出错

[英]Python Cryptography Fernet : Error during decryption

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

SECRET_KEY = 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. 当 Key 被持久化为 byteString 时:

    b'KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI='

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

  2. 当 Key 被持久化为 String

    KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI=

    TypeError: token must be bytes

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

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())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM