【问题标题】:Default mode in Crypto.Cipher.AES.newCrypto.Cipher.AES.new 中的默认模式
【发布时间】:2021-02-20 18:36:34
【问题描述】:

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

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

文档只是说:

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

【问题讨论】:

  • 请注意,使用旧版 PyCrypto 是不安全的。相反,应该使用后继 PyCryptodome,它强制指定模式,否则会显示错误消息:TypeError: new() missing 1 required positional argument: 'mode'

标签: aes pycrypto


【解决方案1】:

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

新(键,*args,**kwargs)

创建一个新的 AES 密码

参数:

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

mode(一个 MODE_* 常量)- 用于加密或解密的链接模式。默认为 MODE_ECB。

...

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

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2012-11-18
    相关资源
    最近更新 更多