我尝试过这样的方法,但它似乎不起作用:
from cryptography.fernet import Fernet
from base64 import urlsafe_b64encode as b64e
bytes_gen = b64e(PASSWORD.encode())
if len(bytes_gen) < 32:
bytes_gen += b'=' * (32 - len(bytes_gen))
elif len(bytes_gen) > 32:
bytes_gen = bytes_gen[:32]
print(bytes_gen, len(bytes_gen))
f = Fernet(bytes_gen)
航站楼:
ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
发布于 2022-11-16 14:42:38
你看错了。密钥是加密密钥,通常大小为16、24或32字节。所以短语"Fernet键必须是32个url安全的base64 64编码字节“。这并不意味着编码需要大小为32个字符,而是意味着需要编码的字节有32个。
不过,您似乎希望使用密码而不是密钥。在这种情况下,您需要读取解释如何使用手册中适当的一节从密码派生密钥的PBKDF2。
https://stackoverflow.com/questions/74461900
复制相似问题