gpt4 book ai didi

python - 如何取消 PKCS#7/PKCS#5 填充?

转载 作者:行者123 更新时间:2023-12-01 01:40:32 32 4
gpt4 key购买 nike

我想寻求有关使用 cryptography.hazmat.primitives.padding.PKCS7 的帮助Python 类。

解密后,我得到字符串453947000000197708080808,而明文应该4539470000001977。根据我们的开发团队的说法,明文应该用 PKCS#5 填充来填充。所以我搜索了这个类,但无法让它工作。

我也可以手动完成此操作,方法是获取最后 2 位数字,将它们转换为整数,将其乘以 2,然后从右侧截取该数字的字符串。但是,我更愿意使用用于解密的同一包中的函数来进行取消填充。

最佳答案

您看到的字符是二进制字节的十六进制表示。您所拥有的是具有给定值的 12 个字节,以值为 8 的四个字节结尾。但是,该输出存在一些严重错误:

  • 对于您所期望的 PKCS#7 填充,结果应该是值为 08 的八个字节或值为 04 的四个字节;
  • 对于 8 或 16 字节分组密码,您期望结果为 16 字节;

因此,我希望您遗漏了结果的 4 个字节。否则解密将不会成功:CBC 或 ECB 解密的输入必须是 8 或 16 字节的倍数,否则会生成错误。

通常不需要单独执行取消填充。填充通常配置用于 ECB 或 CBC 操作模式。一般来说,PKCS#7 取消填充是 ECB 和 CBC 的默认设置(例如在 Java 和 OpenSSL 中)。

<小时/>

如果您想知道,我已经描述了 PKCS#5 和 PKCS#7 填充之间的差异 hereCryptography .

关于python - 如何取消 PKCS#7/PKCS#5 填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51939932/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com