我正在使用Pycharm Text Editor
和PyCryptodome Library
对消息进行加密使用Advanced Encryption Standard (AES)
。它也是主要使用的Symmetric Encryption Algorithm
之一。我的AES Encryption
代码如下:
from Crypto.Cipher import AES
key = os.urandom(16)
cipher = AES.new(key, AES.MODE_ECB)
ciphertext, tag = cipher.encrypt_and_digest(message)
我遇到了一个错误:-
AttributeError: 'EcbMode' object has no attribute 'encrypt_and_digest
第行:-
ciphertext, tag = cipher.encrypt_and_digest(message)
我尝试过卸载模块几次,但错误仍然存在。
Pycharm
没有用红色下划线标记行,我可以使用ctrl-click
进入源代码并查看encrypt_and_digest()
函数是否存在
我的问题是:-
为什么代码不能通过编译器?
python中是否还有另一个模块可以用来执行AES encryption
从
Error
我们可以看到encrypt_and_digest()
属性在AES Encryption
的ECB (Electronic Code Book)
模式中不可用。因此,对于您的查询,有两种解决方案让我们逐一查看:-1。通过更改模式:-
通过将
mode
更改为modern modes
,我们可以使用encrypt_and_digest()
模块。基本上encrypt_and_digest()
模块是encrypt()
和digest()
模块的组合encrypt()
:-此模块用于Encrypt
您的Message
digest()
:-此模块用于生成{使用
EAX Mode
的给定场景的代码如下所述:-2。不改变模式:-
如果要使用
ECB (Electronic Code Book)
模式Encrypt
。然后我们可以使用encrypt()
和hex()
模块使用
ECB Mode
的给定场景的代码如下所述:-希望此解决方案对您有所帮助
如果阅读文档,您将看到
encrypt_and_digest()
仅受modern modes支持:MODE_CCM
MODE_EAX
MODE_GCM
MODE_SIV
MODE_OCB
ECB模式真的不应该用于任何事情,因为它不是semantically secure
相关问题 更多 >
编程相关推荐