AES加密密钥和数据过短导致加密失败

昨天写爬虫需要用到 AES 加密用户密码,用的 Python,使用了 pycryptodome 这个库,随手填了一个密钥 11和需要加密的数据 11,我用的 AES 加密的 ECB 模式。发现加密后的结果和网页上的加密结果不一样, 然后才牵扯出了加密库默认的填充值问题。

查询发现 PKCS#7 填充模式默认的填充是数据和 16 取余数,余数是多少就在后边补多少个余数。

1
2
3
4
5
6
7
01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
06 06 06 06 06 06
...

类似于这种。关键问题在于这里,我之前是将密钥和数据都按照这个规则来填充,后来加密结果总是不对。后来经过一晚上尝试才知道原来密钥不用这个规则填充,密钥总是用 \0 填充,数据才按照不同的填充方式填充不同的值。

参考链接:

https://zh.wikipedia.org/wiki/高级加密标准

https://blog.csdn.net/kikajack/article/details/78329567

https://zhiwei.li/text/2009/05/17/对称加密算法的pkcs5和pkcs7填充/

本文章首发于个人博客 LLLibra146’s blog
本文作者:LLLibra146
版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!
本文链接https://blog.d77.xyz/archives/df6f263.html