人。我使用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
你有什么建议吗?
答案 0 :(得分:4)
计数器大小与分组密码的块大小相同。密码的块大小和密钥大小没有直接关系。
现在,AES-256的密钥大小为256位,块大小为128位。 Rijndael,其中AES是子集,可以具有256位的块大小。但是,使用密钥大小为128,192或256位的AES仍将具有精确的128位块大小。而这只是因为它已经被定义了。
所以基本上你应该始终将ctr
留给Counter.new(128)
。如果您想使用AES-256,请使用key
将os.urandom(32)
增加到32个字节。
如果您想了解如何使用/格式化计数器,请查看NIST SP 800-38A, Appendix B。