OpenSSL,使用私钥解密

Posted

技术标签:

【中文标题】OpenSSL,使用私钥解密【英文标题】:OpenSSL, decrypting with a private key 【发布时间】:2017-07-07 03:34:22 【问题描述】:

好的,所以我有一个名为 Kryptert 的加密文本文件。 带有私钥的名为 private 的密钥文件。我希望输出位于名为 Klartext 的文本文件中。

我正要扯掉我的头发,因为我似乎无法弄清楚这一点。

openssl rsautl -decrypt -inkey C:\private.key -in C:\Kryptert.txt -out C:\Klartext.txt

上面的命令是我使用的,我在 CMD 窗口中得到以下输出:

C:\Users\Marco>openssl rsautl -decrypt -inkey C:\private.key -in C:\Kryptert.txt -out C:\Klartext.txt
Loading 'screen' into random state - done
RSA operation error
8560:error:0407106B:rsa routines:RSA_padding_check_PKCS1_type_2:block type is not 02:.\crypto\rsa\rsa_pk1.c:190:
8560:error:04065072:rsa routines:RSA_EAY_PRIVATE_DECRYPT:padding check failed:.\crypto\rsa\rsa_eay.c:592:

谁能帮助我了解问题所在,以及我该如何解决?谢谢。

【问题讨论】:

使用什么命令加密文件? 【参考方案1】:

这里有使用 openssl 加密或解密所需的命令:

解密:

$ openssl rsautl -decrypt -in $ENCRYPTED -out $PLAINTEXT -inkey keys/privkey.pem

加密:

$ openssl rsautl -encrypt -in $PLAINTEXT -out $PLAINTEXT.encrypt -pubin -inkey keys/pubkey.pem

希望这会有所帮助! :)

【讨论】:

会出现(从错误消息中)输入格式错误,即填充错误。【参考方案2】:

对于加密:

openssl rsautl -encrypt -in /path/to/your/file -out /path/to/your/encrypted -pubin -inkey /path/to/your/public_key.pem

解密:

openssl rsautl -decrypt -in /path/to/your/encrypted -out /path/where/you/want/your/decrypted.txt -inkey /path/to/your/private_key.pem

注意:如果你有这个解密错误:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len在解密你的文件之前试试这个命令:

cat yourEncryptedFile| base64 -D > yourEncryptedRawFile

更多信息here

【讨论】:

必须使用base64-command,小写-d,大写-D无效

以上是关于OpenSSL,使用私钥解密的主要内容,如果未能解决你的问题,请参考以下文章

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

PHP基于openssl实现的非对称加密操作

求助,在android端使用openssl生成的rsapublicKey解密的相关问题

PHP基于openssl实现的非对称加密操作

使用 Python 从 OpenSSL PHP 库中解密

openssl 证书 及ssh密匙