#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
файла. Проверьте это .