密钥长度问题:phpseclib中的AES加密与PyCrypto中的解密
我正在做一个数据处理量很大的项目,使用PHP来获取数据,并用phpseclib进行加密。其中一部分数据是用AES加密的,使用的是ECB模式,不过密钥的长度只有10个字节。我成功地解密了这些数据。
但是,在项目的后期我需要用Python来处理数据,因此我需要用Python来解密我的数据。我尝试使用PyCrypto,但它告诉我密钥长度必须是16、24或32个字节,而我的密钥并不符合这个要求。根据phpseclib的文档,“密钥会被填充到最接近的有效大小”,但我不太确定在Python中该怎么实现。简单地用6个空格来扩展字符串的长度并不奏效。
我该怎么办呢?
1 个回答
3
我强烈建议你调整你的PHP代码,使用至少16个字节的密钥,否则你的加密系统会比它本来应该的要弱很多。
我还建议你切换到CBC模式,因为ECB模式可能会暴露你输入数据中的一些模式。确保每次加密时使用一个随机的初始化向量(IV),并把它和密文一起存储。
最后,针对你最初的问题:
根据phpseclib的文档,“密钥会被填充到最接近的有效大小”,但我不确定如何在Python中实现这一点。简单地用6个空格来扩展字符串的长度是行不通的。
空格字符0x20
和空字符0x00
是不同的。