encryption - AES128 CBC 可以使用 0 填充吗?

标签 encryption aes padding

由于客户端的某些限制,他们在将纯文本传递给 AES alogirhtm 之前用 0x00 填充它,而不是正常的 PKCS5/PKCS7 或类似的填充。

虽然它在我的服务器端是可行的,但我有一个问题:使用 0 填充是否有效。举一个纯文本以 0 填充字符结尾的示例。服务器端无法区分。

0-padding 是可接受的填充方法之一吗?如果是,我这边应该如何正确处理填充?

提前致谢。

最佳答案

不确定“ASCII 代码 0”是什么意思,我会假设一个字节的值为 0x00? (是的,十六进制仍然是一件事)请参阅 Zero padding : 如果原始文件以一个或多个零字节结尾,则零填充可能不可逆,从而无法区分明文数据字节和填充字节。

空填充 (0x00) 可用于不以空结尾的数据,ASCII 文本就是一个有效的示例。已弃用的 PHP mcrypt 会执行此操作,并且空填充会产生互操作性问题。

所以:是的,空填充确实适用于某些数据(例如文本),但不适用于二进制数据。最好不要使用它,PKCS#7.PKCS#5 padding是更好、更常用的padding。

关于encryption - AES128 CBC 可以使用 0 填充吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841625/

相关文章:

Java aes key 到 32 字节字符串表示

python-3.x - AES-CTR 和 AES-GCM 生成的不同密文

java - 将字符串填充至任意长度的方法

objective-c - 如何从 UITableview 的边缘获取填充到 UITableViewCell

c# - Python AES 加密填充导致 C# 解密出现问题

ios - 是否使用自定义函数计算哈希并将其存储为 "incorporating cryptography"(根据导出管理条例)?

java - 混合加密方法失败

ssl - ejabberd s2s 到 GTalk/Hangout with TLS

java - Android慢速AES解密

html - <li> 换行填充错误 - 尝试在正确维护左边框的同时解决