python - fernet 密钥错误“Fernet 密钥必须是 32 个 url 安全的 base64 编码字节”
问题描述
我不断收到此错误,但找不到任何有用的信息。我没有将其存储在文件中,而是将其存储在解密代码中,以便在编译后没有人可以看到它(如果有更好的存储密钥的方法,请告诉我)。
这是错误
get_data = ast.literal_eval(Fernet(Key).decrypt((Message).encode('utf-8')).decode('utf-8'))
File "C:\Program Files\Python37\lib\site-packages\cryptography\fernet.py", line 38, in __init__
"Fernet key must be 32 url-safe base64-encoded bytes."
ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
这是我的代码部分
Key = b'pT8ZDjwCvnWkfPEYBm12q2p9srNkM-nWC6Ss9aAcMEw='
我使代码更容易阅读
message_to_decrypt = (message_to_decrypt).encode('utf-8')
ast.literal_eval(Fernet(Key).decrypt(message_to_decrypt ).decode('utf-8'))
解决方案
尝试这个
import base64
key = b'pT8ZDjwCvnWkfPEYBm12q2p9srNkM-nWC6Ss9aAcMEw='
key = base64.urlsafe_b64encode(key)
如果这不起作用,请提供给您错误的示例代码
推荐阅读
- rust - 参考文献用法
- javascript - 仅更改动态输入字段中的一个特定值
- sql - 查找同一类别中给定类型中不存在的唯一 ID 的计数
- sql-server - Wix SQL Server 安装 - NT AUTHORITY\NETWORK SERVICE 和 BUILTIN\Administrators 的本地化名称
- java - 如何在方法中将 for 循环转换为 while 循环?
- azure - Azure 功能无法访问 Azure 文件共享
- python - 如何在 Python 中使用间隔制作正确的 IF 语句?
- wdm - 为什么 IoAllocateErrorLogEntry 返回 null?
- python - 是否可以使用堆栈帧获取当前(多行)语句的源代码?
- calculator - 带有 Python 的 TI 84 Plus CE 无法以度数处理复杂的极坐标形式