m2crypto aes-256-cbc不能对编码的openssl文件起作用

时间:2010-05-13 22:52:54

标签: m2crypto

$ echo 'this is text' > text.1
$ openssl enc -aes-256-cbc -a -k "thisisapassword" -in text.1 -out text.enc
$ openssl enc -d -aes-256-cbc -a -k "thisisapassword" -in text.enc -out text.2
$ cat text.2
this is text

我可以用openssl做到这一点。现在,我如何在m2crypto中做同样的事情。文档缺乏这一点。我查看了snv测试用例,但仍然没有。我发现了一个样本,http://passingcuriosity.com/2009/aes-encryption-in-python-with-m2crypto/(更改为aes_256_cbc),它将加密/解密它自己的字符串,但它无法解密用openssl创建的任何内容,并且它加密的任何内容都无法从openssl解密。

我需要能够使用aes-256-cbc进行enc / dec,因为有许多文件已经用这个加密了,我们还有许多其他系统可以处理aes-256-cbc输出就好了。

我们仅使用密码短语,没有IV。因此将IV设置为\ 0 * 16是有道理的,但我不确定这是否也是问题的一部分。

任何人都有任何与m2crypto兼容的AES 256的工作样本吗?

我还会尝试一些额外的库,看看它们是否更好。

1 个答案:

答案 0 :(得分:1)

部分问题是openssl创建的文件包含16个字节的前置盐信息Salted__xxxxxxxx。因此,必须先提取这些,然后才能进行解密。接下来的问题是获取原始密码,撒上盐,并从中获取生成的密钥,并使密钥/ iv对进行解密。我已经能够使他们的第一轮键入哈希,但是256位,它需要两轮才能成功。问题是创建第二轮哈希。

还应该提到的是,我们被锁定在python 2.4中,因此引入的一些未来的关键例程对我们不起作用。