我希望帮助您使用cryptography.hazmat.primitives.padding.PKCS7类。
解密后,我将得到字符串453947000000197708080808,而明文应该是4539470000001977。根据我们的开发团队,纯文本应该用PKCS#5填充。所以我找了这门课,但没能让它开始工作。
我也可以手动完成,方法是把最后两个数字转换成整数,乘以2,然后把字符串从右边切下来。但是,我更愿意使用与我用于解密的包中的函数来解除填充。
发布于 2018-08-19 17:43:19
您正在看到的字符是二进制字节的十六进制表示形式。在给定值的情况下,有12个字节,以值为8的4个字节结尾。但是,输出有一些严重错误:
08或4个字节值的04;因此,我希望您忽略了结果的4个字节。否则解密就不会成功: CBC或ECB解密的输入必须是8或16个字节的倍数,否则就会产生错误。
通常,不需要单独执行解填充操作。填充通常配置为欧洲央行或CBC的操作模式。通常,PKCS#7解填充是ECB和CBC的默认设置(例如,在Java和OpenSSL中)。
如果您想知道,我已经描述了PKCS#5和PKCS#7填充这里在站点上的不同之处。
https://stackoverflow.com/questions/51939932
复制相似问题