我有以下代码,它从.bin文件中获取加密密钥
from cryptography.fernet import Fernet
def C(i):
f=open('/home/credentials.bin',"rb")
e=f.read()
e=e.split("\n")
e2=e[-2]
d = Fernet(e2)
c = e[i]
t = (d.decrypt(c))
s= bytes(t).decode("utf-8")
f.close()
return str(s)
print(C(0))
试图打印解密密钥会导致以下错误:
"Fernet key must be 32 url-safe base64-encoded bytes."
ValueError: Fernet键必须是32 url安全的base64 64编码字节。
credentials.bin大陆
"gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA=="
`
我感谢你的帮助
发布于 2022-06-17 20:25:50
您的密钥对于Fernet键来说太长了:是:
len("gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA==")
产出:
100
而铁键是:
len(Fernet.generate_key())
产出:
44
它与你的钥匙的唯一工作方式是如果你切断了第一部分,但我很肯定这是,而不是,它的意图。
Fernet("gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA=="[-45:-1])
产出:
<cryptography.fernet.Fernet object at 0x7feb65b5bf10>
我想你这里的钥匙错了,或者不是费内特的钥匙。
https://stackoverflow.com/questions/72663513
复制相似问题