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

如何使用RSA密钥文件从openssl aes-256解密密文,openssl,aes,Openssl,Aes,我正在设计一种加密方案,将文件发送到嵌入式设备。开发人员可以通过共享公钥登录,因此使用相同的密钥加密/解密发送给它的文件是有意义的。文件仅由开发人员打包,因此该公钥永远不会发出 发送的文件只需要足够安全,以使其难以解密,而不是任何NSA质量或任何东西 我可以使用如下方式进行加密/解密: cat file | openssl [-d] aes-256-cbc -kfile path/to/public/key > outfile.aes 这是伟大的工作,除了我想在服务器代码中这样做。我可以

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

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

我可以使用如下方式进行加密/解密:

cat file | openssl [-d] aes-256-cbc -kfile path/to/public/key > outfile.aes
这是伟大的工作,除了我想在服务器代码中这样做。我可以掏钱,但我宁愿用代码

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

openssl到底对密钥文件做了什么?我如何在代码中模拟它

我尝试了
manopenssl
,但没有发现任何有用的东西


如果重要的话,我会在Go中执行此操作。

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


如果您不介意的话,我可以让您自己对该算法进行stackoverflow搜索:)

您想使用RSA公钥作为AES密钥吗?如果您不提供公钥,该设备将如何解密文件?该设备具有公钥(与开发人员登录时使用的公钥相同)。因此,任何有权访问该设备的人都可以访问该公钥。如果使用公钥对文件进行加密/解密,则具有设备访问权限的任何人都可以对文件进行加密和解密。你为什么要阻止人们解密文件?它的内容是秘密的吗?如果是这样的话,从谁那里?我想主要是为了让诚实的人保持诚实。我们真的希望我们的客户不能轻松解密该文件,因为它包含一些知识产权。因为他们有物理访问权限,所以无论如何也不会完全安全。如果不打开我们的密封盒,他们就无法访问公钥,所以我认为这是解决问题的一个足够好的解决方案。这些软件包大多是编译过的二进制文件,所以我们不会冒任何源代码或类似的风险。“开发人员可以通过共享公钥登录”对我来说真的没有任何意义。登录时不使用公钥,而是使用私钥。私钥可以在开发人员之间共享,但通常您只需给每个人一个密钥,然后使用PKI(例如证书链)让他们访问同一设备。谢谢,我想这正是我想要的!