Crypto.Cipher.AES.new

问题描述

方法Crypto.Cipher.AES.new(key,mode,*args,**kwargs)中,当只提供一个参数时,认模式是什么:

cipher = AES.new(key)
Crypted = cipher.encrypt(plaintext)

文档只是说:

mode(支持的 MODE_* 常量之一)——用于加密或解密的链接模式。如有疑问,请使用 MODE_EAX。

解决方法

欧洲央行。这在 docs 中有详细说明。 (我不确定您正在查看哪些文档。自您拥有的版本以来,文档可能已经有所改进。)

new(key,*args,**kwargs)

创建新的 AES 密码

参数:

key (byte string) - 在对称密码中使用的密钥。它的长度必须为 16 (AES-128)、24 (AES-192) 或 32 (AES-256) 字节。

mode (a MODE_* constant) - 用于加密或解密的链接模式。默认为 MODE_ECB。

...

作为一项规则,我不会在这里依赖默认值。它对加密有重大影响,对于阅读代码的任何人来说都很重要。 (此外,ECB 几乎总是使用错误的模式。它只在非常受控制的情况下才是安全的。)