无法在 python 中的 AES.MODE_CTR 密码中使用 256 位计数器
Can't use 256-bits counter in AES.MODE_CTR cipher in python
伙计们。我使用 crypto
库进行 AES 加密和解密。 AES-128 完美运行:
ctr = Counter.new(128)
key = os.urandom(16)
obj = AES.new(key, AES.MODE_CTR, counter=ctr)
但是当我把128改成256,16改成32时出现错误:
ValueError: unsupported format character 'b' (0x62) at index 29
你能帮帮我吗,有什么建议吗?
计数器大小与块密码的块大小相同。密码的块大小和密钥大小没有直接关系。
现在 AES-256 的 密钥大小 为 256 位,块大小 为 128 位。 Rijndael,其中 AES 是一个子集,can 的块大小为 256 位。但是 AES,使用 128、192 或 256 位的密钥大小,仍将具有恰好 128 位的块大小。那只是因为它是这样定义的。
所以基本上你应该总是把 ctr
留给 Counter.new(128)
。如果您想使用 AES-256,请使用 os.urandom(32)
.
将 key
增加到 32 个字节
如果您想获得有关如何使用/格式化计数器的提示,请查看 NIST SP 800-38A, Appendix B。
伙计们。我使用 crypto
库进行 AES 加密和解密。 AES-128 完美运行:
ctr = Counter.new(128)
key = os.urandom(16)
obj = AES.new(key, AES.MODE_CTR, counter=ctr)
但是当我把128改成256,16改成32时出现错误:
ValueError: unsupported format character 'b' (0x62) at index 29
你能帮帮我吗,有什么建议吗?
计数器大小与块密码的块大小相同。密码的块大小和密钥大小没有直接关系。
现在 AES-256 的 密钥大小 为 256 位,块大小 为 128 位。 Rijndael,其中 AES 是一个子集,can 的块大小为 256 位。但是 AES,使用 128、192 或 256 位的密钥大小,仍将具有恰好 128 位的块大小。那只是因为它是这样定义的。
所以基本上你应该总是把 ctr
留给 Counter.new(128)
。如果您想使用 AES-256,请使用 os.urandom(32)
.
key
增加到 32 个字节
如果您想获得有关如何使用/格式化计数器的提示,请查看 NIST SP 800-38A, Appendix B。