我已阅读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的文档和源代码中。
欢迎任何建议。提前谢谢。
答案 0 :(得分:0)
openssl联机帮助页说如果没有提供密钥和iv值,则会从密码生成。它还提供-P
选项来打印salt,key和iv值。 (这是需要传递给函数的密钥,而不是密码)。
可以从文件头获取salt值。然后键和iv必须使用相同的方法重新生成。
此stackexchange page给出了非常详细的答案。