如何使用RSA密钥文件解密openssl aes-256中的密文

时间:2012-12-14 22:45:41

标签: openssl aes

我正在设计一种加密方案来将文件发送到嵌入式设备。开发人员可以通过共享公钥登录,因此使用相同的密钥加密/解密发送给它的文件是有意义的。文件仅由开发人员打包,因此永远不会发出此公钥。

发送的文件只需要足够安全以使其难以解密,而不是任何NSA质量或任何东西。

我可以使用以下内容加密/解密:

cat file | openssl [-d] aes-256-cbc -kfile path/to/public/key > outfile.aes

这很有效,除了我想在服务器代码中执行此操作。我可以掏出来,但我宁愿用代码来做。

我从密钥中获取了base64数据,但是当我解码它时,我得到一个279字节的数组,但我需要一个256位密钥(32字节)。

openssl究竟对密钥文件做了什么以及如何在代码中模拟它?

我试过了man openssl,但我找不到任何有用的东西。

如果重要,我会在Go中这样做。

1 个答案:

答案 0 :(得分:1)

OpenSSL使用特定的密钥派生函数从给定的“密码”计算密钥。此函数称为EVP_BytesToKey。它是OpenSSL API的一部分,因此如果您可以调用C / C ++函数,则可以直接使用它。否则还有其他可用的实现(实际上并不难实现,我创建了面向对象的Java版本)。

如果您不介意的话,我会让您自己进行stackoverflow搜索此算法:)