我正在使用以下命令来解密 base64 字符串。
openssl enc -in ciphertext -out binarytext -d -a
openssl rsautl -decrypt -in binarytext -out plaintext -inkey private.pem
当我的密文中有字符 / 时,我遇到了一个问题,linux 将其视为目录分隔符。如何解决这个问题?
示例密文如下:
MpTF1+cqa23PdxQ6EoG9E77jfRJGYjORc4omawTg/g8jtUDZNNEeEr3waadTSLjQAfmJO94fpaA145yanoU9khrzCd/nAGIIAVwMC67UnsX+XY6dOEZMo41Z0dU1n42rUtkdXgldHXR1SQXaeDyjRnMj/mMMreNdykl8b4vNVPk=
我得到的错误是
ptpll081:密钥管理员$ openssl rsautl -decrypt -in MpTF1+cqa23PdxQ6EoG9E77jfRJGYjORc4omawTg/g8jtUDZNNEeEr3waadTSLjQAfmJO94fpaA145yanoU9khrzCd/nAGIIAVwMC67UnsX+XY6dOEZMo41Z0dU1n42rUtkdXgldHXR1SQXaeDyjRnMj/mMMreNdykl8b4vNVPk= -out plaintext -inkey PrivateKey.pem 读取输入文件时出错 22313:错误:02001002:系统库:fopen:没有此文件或目录:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/bio/bss_file.c:126:fopen('MpTF1 + cqa23PdxQ6EoG9E77jfRJGYjORc4omawTg/g8jtUDZNNEeEr3waadTSLjQAfmJO94fpaA145yanoU9khrzCd/nAGIIAVwMC67UnsX + XY6dOEZMo41Z0dU1n42rUtkdXgldHXR1SQXaeDyjRnMj/mMMreNdykl8b4vNVPk =','rb')22313:错误:2006D080:BIO例程:BIO_new_file:没有这样的文件:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/bio/bss_file.c:129:
答案1
尝试这样的操作:
openssl rsautl -decrypt -in binarytext -out myfile.txt -inkey private.pem
这里重要的是-out myfile.txt
答案2
-in
需要一个文件名,并且您正在传递编码的密文。
将密文放入文件中input
:
MpTF1+cqa23PdxQ6EoG9E77jfRJGYjORc4omawTg/g8jtUDZNNEeEr3waadTSLjQAfmJO94fpaA145yanoU9khrzCd/nAGIIAVwMC67UnsX+XY6dOEZMo41Z0dU1n42rUtkdXgldHXR1SQXaeDyjRnMj/mMMreNdykl8b4vNVPk=
然后尝试:
openssl rsautl -decrypt -in input -out plaintext -inkey private.pem