1

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

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

我应该怎么办?

4

1 回答 1

3

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

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

最后,解决你原来的问题:

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

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

于 2013-02-15T10:17:40.747 回答