首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在密码库中的数据中添加填充以使其能够被AES256加密算法所接受

如何在密码库中的数据中添加填充以使其能够被AES256加密算法所接受
EN

Stack Overflow用户
提问于 2010-01-21 17:18:18
回答 2查看 3.8K关注 0票数 7

谁能告诉我如何添加一个填充数据,使其可以接受的AES256加密算法在pycrypto库(Python)。

事先非常感谢..:)

EN

回答 2

Stack Overflow用户

发布于 2010-01-21 17:43:57

看一下documentation,似乎是由库用户自己填充数据的。文档指出,AES的块大小始终为16字节,因此您需要将数据填充为16字节的倍数。

填充的方式取决于数据的类型。对于字符串,最好的方法可能是将字符串编码为特定的编码,然后获取该编码的长度。这样,您就不需要依赖于所有字符都由一个8位码点表示:

代码语言:javascript
复制
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),以便能够正确地恢复消息。

票数 5
EN

Stack Overflow用户

发布于 2010-01-21 20:50:40

使用标准的填充方案,例如PKCS-5的第6.1.1小节第4步中概述的方案(如果您使用的是AES,请将该示例中的8替换为16 )。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2108047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档