Ключ создается и сохраняется в файле 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. Когда ключ сохраняется как byteString:

    b'KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI = '

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

  2. Когда ключ сохраняется как строка

    KG0TUB0grHz1AngJUwcsN4jcRlujde5sbzbeJ8InZsI =

    TypeError: token must be bytes

0
Vaibhav Sawant 16 Мар 2021 в 09:36

1 ответ

Лучший ответ

Решение: кодируйте и ключ, и сообщение

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())
0
Vaibhav Sawant 16 Мар 2021 в 07:08