我需要创建一个数据库列,用于存储使用 Triple DES 加密的字符串。如何确定加密字符串列的长度?
(也欢迎除 Triple DES 以外的算法的答案。)
DES、3DES 和 AES 等分组密码只能对字节块进行操作。 DES 和 3DES 在 8 字节块上运行,AES 在 16 字节块上运行。
为了解决这个问题,您通常在加密之前对明文应用可逆填充。它通常总是“PKCS”填充(也称为 PKCS5 或 PKCS7 填充)。
PKCS-padding 添加至少一个字节,使得填充文本的长度可被块长度整除(3DES 为 8 个字节)。 padding-bytes 的值是添加的字节数。外汇。 ABCDEF 被填充为 ABCDEF0505050505,0011223344556677 被填充为 0011223344566770808080808080808。请注意,这很容易删除:您只需查看填充字节的最后一个字节,验证它是否在 1 和块长度之间,然后删除该字节数从末尾开始(验证每个删除的字节是否具有正确的值)。
最后,回答你的问题:假设你正在使用带有 CBC 加密和 PKCS 填充的 3DES - 你可能就是这样 - 长度为 n 的字符串的加密将具有长度:
n + 8 - (n % 8)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)