如何使用C API解码openssl命令行生成的aes-256-cbc文件?

时间:2014-10-30 11:46:21

标签: c openssl

我已阅读a link,我可以通过C API正确编码/解码数据。

但是,我有一个由openssl命令行生成的文件:

openssl aes-256-cbc -in plain.txt -out encrypted.txt
> enter password from stdin

想要使用C API解码输出。代码如下:

unsigned char key[] = "password";
unsigned char iv[] = "";  // I don't know what is the default iv.
EVP_CipherInit(&ctx, EVP_aes_256_cbc(), key, iv, 0);

输出错误。有没有人知道如何解决它?也许我打错了功能?例如:EVP_PBE_CipherInit?我完全迷失在openssl的文档和源代码中。

欢迎任何建议。提前谢谢。

1 个答案:

答案 0 :(得分:0)

openssl联机帮助页说如果没有提供密钥和iv值,则会从密码生成。它还提供-P选项来打印salt,key和iv值。 (这是需要传递给函数的密钥,而不是密码)。

可以从文件头获取salt值。然后键和iv必须使用相同的方法重新生成。

此stackexchange page给出了非常详细的答案。