将.pem转换为缓冲区并解密

时间:2012-11-05 16:24:24

标签: openssl aes rsa

我正在研究专有的AES代码。但与此同时,我正在使用OpenSSL进行编码。我使用以下Open SSL命令编写了一个RSA密钥:

openssl genrsa -out key.pem 1024

它为我提供了一个 key.pem 文件,其中包含“BEGIN”& “结束”轶事。我使用以下命令对文件进行编码:

openssl enc -aes-128-cbc -salt -in file.txt -out file.enc -pass file:./key.pem

我想在我的代码中解码这个文件。我正在读取缓冲区中的密钥文件并尝试使用AES库进行解码,但它失败了。 此外,我尝试使用Open SSL解码命令试验同样失败的命令。

成功解码:

openssl enc -d -aes-128-cbc -in file.enc -out file.txt -pass file:./key.pem

解码失败(在命令行中将key.pem文件的内容作为缓冲区):

openssl enc -d -aes-128-cbc -in file.enc -out file.txt -pass pass:"-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQDHYfNAzVcM8OVxUIF/Yek/ZvhRGHJIjbcWO/vVWUDJWzKCC2dP
KSeBnSRdFTjGKmowOUxpiKXdpKekc2CCRNiwjTykoNhm9K+un2yoj7pgtMoH1R4g
y8rviea3kXQGxAaHq5mi2XGZE7/LlEhEr7B/5UcntrU9B6sXXn0Pa9iRAQIDAQAB
AoGAf4hn0EuIIv7zxEd6jcBTMfrrWvQIJeB/+/jiXNV6W1G6PPSOYFQysPWTDPdG
GXuH8NC1z8tYTS3FDau/T5Q6BZM/T4/vIwjbLZfa1UpmzXB08kpUliUDwSZ6W4Be
uuZWyqvevqKBn/TO8DUfd684tL3O4m8q9o+n9JtqjaVYFAECQQDmFj6GfL6NdUZa
RKJVC/8WbAt/FKlkwIpXsKWD600Fj59oDC0ue9/hth9r3bCjPU1tAEy7Gfltd4bm
Fa7YbPL9AkEA3dZ0eI7v+c3P6/5R0yHsnZIlYPBBHWeSqp4FlASmj9i1cD8IOZ1g
7JKhlJVMC19vf647JCwJAl6H2exnH4BfVQJAL9280DmvYrpdEnZo1wyR2tZLZfqk
auNrZGbJaDJRabDBVuIBnEQFBW3gB46tKqicLOr9C4eRzmYpWEB2iWvQ+QJAPagI
USWxLyXz3yydQ2hPYnAnMW01O934lrE67avpO1vI+fya5aCHOtl6TVi9fP+2dq9P
Qrt2eZEagwhAlTHRzQJAdf6CGLVdgXWq+JyK6Yp3S9npd+YKJ3T0OJ0Qg9VlB+OQ
s/tlqQuXmj03ZxS9+e5pD0rZ9QvL7BtZ30hHYHOHCw== -----END RSA PRIVATE
KEY-----"

我想知道如何在缓冲区中安装.pem文件以便我可以成功解码?

1 个答案:

答案 0 :(得分:0)

您在这里实际使用的是RSA密钥,不是用于RSA加密或解密,而是用作密码。 然后,OpenSSL将使用密钥派生方案从“密码”创建AES密钥,并使用此密钥加密您的文本文件。

我想这不是你想要做的(例如,没有必要使用RSA密钥),但如果你的主要问题是如何使用缓冲区将文件的内容传递给OpenSSL,你应该查找OpenSSL文档的PASS PHRASE ARGUMENTS部分。选项-pass stdin参数意味着您可以在进程'标准输入流中传递“密码”。