Ошибка расшифровки Fernet в криптографическом пакете python

#python #python-3.x #cryptography #python-cryptography #fernet

Вопрос:

Я получаю ошибку расшифровки Fernet ошибка в строке(f = Fernet(private_key)) .Пожалуйста, помогите в этом.

Ошибка:Ошибка значения: Ключ Fernet должен содержать 32 байта в кодировке base64, безопасных для URL.

     from cryptography.fernet import Fernet
    import base64

    config_path = os.path.join(str(Utils.get_project_root()), 'key.pem')
    with open(config_path, "rb") as file_handle:
        private_key = file_handle.read()
    decoded_msg = base64.urlsafe_b64decode(encoded_text)
    f = Fernet(private_key)
    decrypted_msg = f.decrypt(decoded_msg)
    decrypted_msg.decode()
 

Комментарии:

1. Как уже указано в сообщении об ошибке, длина ключа должна составлять 32 байта, а кодировка Base64url. Так ли это? Что касается расширения .pem, возможно, нет, вам следует опубликовать образец ключа.

2. В дополнение к вышеупомянутому комментарию, base64.urlsafe_b64decode имеет некоторое странное поведение. Я помню, что тоже сталкивался с проблемами с JWT при использовании этого кода. Возможно, стоит взглянуть на

3. @Topaco здесь, какой из двух (key.pem или encoded_text ) должен быть длиной 32 байта и в кодировке Base64url ?

4. private_key (ключ Фернета) и, следовательно, содержимое key.pem файла. Проверьте это .