1

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

openssl genrsa -out key.pem 1024

这给了我一个key.pem包含“BEGIN”和“END”轶事的文件。我使用以下命令对文件进行编码:

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 文件放在缓冲区中,以便成功解码?

4

1 回答 1

0

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

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

于 2012-11-10T21:24:33.907 回答