谁能告诉我如何添加一个填充数据,使其可以接受的AES256加密算法在pycrypto库(Python)。
事先非常感谢..:)
发布于 2010-01-21 17:43:57
看一下documentation,似乎是由库用户自己填充数据的。文档指出,AES的块大小始终为16字节,因此您需要将数据填充为16字节的倍数。
填充的方式取决于数据的类型。对于字符串,最好的方法可能是将字符串编码为特定的编码,然后获取该编码的长度。这样,您就不需要依赖于所有字符都由一个8位码点表示:
plaintext = data.encode('utf-8')
l = len(plaintext)
ciphertext = cipher.encrypt(plaintext + ((16 - len%16) * PADDING_BYTE))当你的数据是一个字节数组时,类似的方法也会起作用。
0应该可以作为PADDING_BYTE很好地工作,但是在解密数据时需要注意删除填充。在密文中包含数据的长度可能是值得的,例如,在加密之前将数据的长度预先添加到明文中,但随后您需要跳过一些障碍,以确保正确生成填充。
RFC :哦,是的,就像提到的 GregS链接一样,处理长度问题的标准方法是使用填充的长度作为填充字节。即,如果需要6字节的填充,则填充字节为0x06。请注意,如果您不需要任何填充,则需要添加整个填充字节块(16字节的0xa0),以便能够正确地恢复消息。
发布于 2010-01-21 20:50:40
使用标准的填充方案,例如PKCS-5的第6.1.1小节第4步中概述的方案(如果您使用的是AES,请将该示例中的8替换为16 )。
https://stackoverflow.com/questions/2108047
复制相似问题