Python 属性错误:';字节';对象没有属性';在"时间"加密"x27;多花呢

Python 属性错误:';字节';对象没有属性';在"时间"加密"x27;多花呢,python,python-cryptography,fernet,Python,Python Cryptography,Fernet,只是尝试使用multivernet加密纯文本 我的代码是: from cryptography.fernet import Fernet, MultiFernet fetnet_keys = [ Fernet.generate_key(), Fernet.generate_key() ] mulfern = MultiFernet(fetnet_keys) enc = mulfern.encrypt("My Message in Plain Text

只是尝试使用
multivernet
加密纯文本

我的代码是:

from cryptography.fernet import Fernet, MultiFernet

fetnet_keys = [
      Fernet.generate_key(), 
      Fernet.generate_key()
]    
mulfern = MultiFernet(fetnet_keys)
enc = mulfern.encrypt("My Message in Plain Text".encode('utf-8'))

print(enc)
尝试加密纯文本时,我得到:

Traceback (most recent call last):
  File "encryption1.py", line 21, in <module>
    enc = mulfern.encrypt("My Message in Plain Text".encode('utf-8'))
  File "venv3.8\lib\site-packages\cryptography\fernet.py", line 169, in encrypt
    return self.encrypt_at_time(msg, int(time.time()))
  File "venv3.8\lib\site-packages\cryptography\fernet.py", line 172, in encrypt_at_time
    return self._fernets[0].encrypt_at_time(msg, current_time)
AttributeError: 'bytes' object has no attribute 'encrypt_at_time'
回溯(最近一次呼叫最后一次):
文件“encryption1.py”,第21行,在
enc=mulfern.encrypt(“我的纯文本邮件”。encode('utf-8'))
文件“venv3.8\lib\site packages\cryptography\fernet.py”,第169行,加密
返回self.encrypt_at_time(msg,int(time.time()))
文件“venv3.8\lib\site packages\cryptography\fernet.py”,第172行,在加密时
返回self.\u fernets[0]。在\u时间加密\u(消息,当前\u时间)
AttributeError:“bytes”对象没有“加密时间”属性
解决方案是什么?

Fernet.generate_key()
返回一个
bytes
对象。该键应用于初始化
Fernet
对象。获取
Fernet
对象的列表。注意
multivernet
使用列表中的第一个密钥进行加密,但通过尝试每个密钥进行解密

例如:

从cryptography.fernet导入fernet、multivernet、InvalidToken
old_key=Fernet(Fernet.generate_key())
new_key=Fernet(Fernet.generate_key())
mulfern=Multipernet([新密钥,旧密钥])
old_enc=old_key.encrypt(b'old message')
印刷品(旧版)
new_enc=mulfern.encrypt(我的纯文本消息)
打印(新附件)
尝试:
打印(旧密钥。解密(新密钥))
除InvalidToken外:
打印('old_key failed')
打印(mulfern.解密(旧加密))
打印(多重解密(新加密))
输出:

b'gaaaabgo0evjyapic3jhybc8itppwenhpo16s_suoaq3uzuxuutcxemvfr62zevw53lpj9mdyo2a5ys2dpp77b61jhybrfq='
b'GAAAABGO0EV8A4IXT6HHGVJ8UDKR1GJFJMCFG-Wd96NOR8lrpkhS7USVrZj0WiF74druiZHiDhXxxSt1Wb2CURHYdlZ8-o0SEcEhfOzEl66qgVX2pyNP6Y='
旧密钥失败
“旧消息”
“我的纯文本信息”

谢谢你,马克。是的,这是正确的。但是Fernet的一个问题是,它生成的加密字符串超过120个字符。但需要较短的长度,如:32等