|
1
3
mcrypt库/包装器默认为零字节填充(仅在需要时),而OpenSSL库/包装器默认为PKCS#5填充。这意味着单个块的填充方式不同,因此将显示不同的密文块。 一个常见的技巧是解密产生的密文 没有 任何不匹配项,然后通过查看纯文本+十六进制填充来检查填充字节。 这将向您展示:
对于mcrypt和
对于OpenSSL。 使用一个需要加密多个块的更大的纯文本消息,也会向您显示加密正在顺利进行 除了
先把数据归零
当且仅当
mcrypt输入不是8字节的倍数(Blowfish的块大小),那么使用
注意,查看源代码可以发现
有关更多信息,请访问 the great research performed by Reinier 这显示了API如何填充/取消填充(或者忘记填充/取消填充,具体取决于您所处的位置)。 |
|
|
2
2
Maarten's answer ,只是我觉得最好能展示一些代码来说明他的话。
提供以下十六进制转储:
给予
最后,尝试调用
给予
备注:姓名
|
|
|
stix359 · 将DER公钥转换为PEM并返回 2 年前 |
|
|
Tấn Duy · 无法使用SSL连接到MySQL 2 年前 |
|
|
Jay · 如何使用Dockerfile安装openssl? 2 年前 |
|
|
Benji-Conqueror · 如何解决“未定义引用”问题? 2 年前 |
|
|
geckels1 · Zeep的SSL错误-如何更改密码套件? 2 年前 |