繁体   English   中英

“Fernet”python 编码给了我以下错误: ValueError: Fernet key must be 32 url-safe base64-encoded bytes

[英]"Fernet" python encoding gives me the following error: ValueError: Fernet key must be 32 url-safe base64-encoded bytes

我有以下代码从 .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 编码字节。

credentials.bin 大陆 `

"gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA=="

`

我感谢您的帮助

您的密钥对于 Fernet 密钥来说太长了:它是:

len("gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA==")

输出:

100

而 fernet 键是:

len(Fernet.generate_key())

输出:

44

它与您的密钥一起使用的唯一方法是如果您切断第一部分,但我很确定这不是它的意图

Fernet("gAAAAABeTAKV_odfhx3i6BhiaXeEDdxvG3eDdployKspvIcnm87zXd94fklNm1mMVkTlN6UUehyw0VzgNU1mj0Zlzi6yNynmOA=="[-45:-1])

输出:

<cryptography.fernet.Fernet object at 0x7feb65b5bf10>

我认为您这里的密钥有误,或者它不是 Fernet 密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM