密钥长度问题:phpseclib上的AES加密和PyCrypto上的解密

时间:2013-02-15 09:22:24

标签: php python aes pycrypto phpseclib

我正在开展一个数据密集型项目,我一直在使用PHP获取数据并使用phpseclib对其进行加密。使用ECB模式在AES中加密了一大块数据 - 但密钥长度仅为10.我能够成功解密数据。

但是,我需要在项目的后期阶段使用Python,因此需要使用它来解密我的数据。我尝试使用PyCrypto,但它告诉我密钥长度必须是16,24或32字节长,事实并非如此。根据phpseclib文档,“键是空填充到最接近的有效大小”,但我不确定如何在Python中实现它。简单地用6个空格扩展字符串的长度是行不通的。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

我强烈建议您调整PHP代码以使用(至少)一个16字节的密钥,否则您的加密系统会比其他方式弱得多。

我还建议您切换到CBC模式,因为ECB模式可能会显示输入数据中的模式。确保每次加密时都使用随机IV,并将其与密文一起存储。

最后,要解决您的原始问题:

  

根据phpseclib文档,“密钥是空填充到最接近的有效大小”,但我不确定如何在Python中实现它。简单地用6个空格扩展字符串的长度是行不通的。

空格字符0x20与空字符0x00不同。