问题描述
在方法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 几乎总是使用错误的模式。它只在非常受控制的情况下才是安全的。)