我正在开展一个数据密集型项目,我一直在使用PHP获取数据并使用phpseclib对其进行加密。使用ECB模式在AES中加密了一大块数据 - 但密钥长度仅为10.我能够成功解密数据。
但是,我需要在项目的后期阶段使用Python,因此需要使用它来解密我的数据。我尝试使用PyCrypto,但它告诉我密钥长度必须是16,24或32字节长,事实并非如此。根据phpseclib文档,“键是空填充到最接近的有效大小”,但我不确定如何在Python中实现它。简单地用6个空格扩展字符串的长度是行不通的。
我该怎么办?
答案 0 :(得分:3)
我强烈建议您调整PHP代码以使用(至少)一个16字节的密钥,否则您的加密系统会比其他方式弱得多。
我还建议您切换到CBC模式,因为ECB模式可能会显示输入数据中的模式。确保每次加密时都使用随机IV,并将其与密文一起存储。
最后,要解决您的原始问题:
根据phpseclib文档,“密钥是空填充到最接近的有效大小”,但我不确定如何在Python中实现它。简单地用6个空格扩展字符串的长度是行不通的。
空格字符0x20
与空字符0x00
不同。