OpenSSL公钥解密文件?

时间:2015-02-12 17:57:58

标签: openssl public-key-encryption encryption-asymmetric

我的理解是公钥可以用于加密而私有用于解密,并且公钥不能解密由同一公钥加密的文件。我误解了或者我做错了什么?

1)生成一个密钥

openssl genrsa -out ./private.pem 2048

2)生成公钥

openssl rsa -in ./private.pem -pubout> ./public.pem

3)加密小文本文件

openssl enc -in ./in.txt -out ./out.enc -e -aes256 -k ./public.pem

4)使用PUBLIC密钥解密文件

openssl enc -in ./out.enc -out ./out.txt -d -aes256 -k ./public.pem

最后一步可以解密" out.enc"文件。不是我想要或期望的。

2 个答案:

答案 0 :(得分:1)

虽然问题确实很旧,但我必须声明TS是正确的:公钥无法解密由相同公钥加密的文件。只有相应的私钥才能。

真正的问题是AES不是公钥算法。它使用相同的密钥进行加密和解密,密钥可以是任意字节序列。

答案 1 :(得分:0)

没有。那是错的。两个密钥(公共和私有)可用于BOTH加密和解密。踢球者是你不能用相同的键来反转操作。

e.g。

encrypt(doc, publickey) -> decrypt(crypteddoc, publickey)  // fails
encrypt(doc, privatekey) -> decrypt(crypteddoc, privatekey) // fails

encrypt(doc, publickey) -> decrypt(crypteddoc,privatekey) // works
encrypt(doc, privatekey) -> decrypt(crypteddoc, publickey) // works

从技术上讲,无论你分享和公开哪个密钥都没关系,只要你将其中一个密钥设为公开,就不能共享另一个密钥。私密密钥。