我的理解是,公钥可以用于加密,私钥可以用于解密,公钥不能解密由同一公钥加密的文件。我是误解了还是做错了什么?
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"文件。不是我想要或期望的。
尽管这个问题很老了,但我必须声明TS做对了:公钥无法解密由同一公钥加密的文件。只有相应的私钥可以。
真正的问题是AES不是公钥算法。它使用相同的密钥进行加密和解密,并且密钥可以是任意的字节序列。
否。这是错误的。这两个密钥(公钥和私钥)可以用于加密和解密。关键是你不能用同一把钥匙逆转操作。
例如
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
从技术上讲,你共享和公开哪个密钥并不重要,只要你公开了其中一个密钥,你就永远不能共享另一个私钥。