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


Key length issue: AES encryption on phpseclib and decryption on PyCrypto

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

然而,我需要在项目的后期使用Python,因此需要使用它解密我的数据。我尝试使用PyCrypto,但它告诉我密钥长度必须是16、24或32字节长,但事实并非如此。根据phpseclib文档,"键被空填充到最接近的有效大小",但我不知道如何在Python中实现这一点。简单地用6个空格来延长字符串的长度是行不通的。

我该怎么办?

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

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

最后,为了解决您最初的问题:

根据phpseclib文档,"键被空填充到最接近的有效大小",但我不知道如何在Python中实现这一点。简单地用6个空格来延长字符串的长度是行不通的。

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