Encryption 如何使用OpenSSL使用公钥加密消息,然后使用私钥解密?

Encryption 如何使用OpenSSL使用公钥加密消息,然后使用私钥解密?,encryption,openssl,public-key,private-key,Encryption,Openssl,Public Key,Private Key,以下是我尝试过的: 使用我的公钥加密邮件 openssl enc -aes-256-cbc -salt -kfile key.pub -in message.txt -out message.enc openssl enc -d -aes-256-cbc -salt -in message.enc -pass file:mykey.pem 使用我的私钥解密邮件 openssl enc -aes-256-cbc -salt -kfile key.pub -in message.txt -ou

以下是我尝试过的:

使用我的公钥加密邮件

openssl enc -aes-256-cbc -salt -kfile key.pub -in message.txt -out message.enc
openssl enc -d -aes-256-cbc -salt -in message.enc -pass file:mykey.pem 
使用我的私钥解密邮件

openssl enc -aes-256-cbc -salt -kfile key.pub -in message.txt -out message.enc
openssl enc -d -aes-256-cbc -salt -in message.enc -pass file:mykey.pem 
解密错误

bad decrypt
452:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:
加密:

openssl enc -aes-256-cbc -salt -pass file:password.txt -in message.txt -out message.enc
解密:

openssl enc -aes-256-cbc -d -salt -pass file:password.txt -in message.enc -out message.dec
其中文件
password.txt的第一行包含您的密码。

此代码有效:

openssl rsautl -pubin -inkey key.pub -encrypt -in message.txt -out message.enc

openssl rsautl -inkey privkey.pem -decrypt -in message.enc -out message.dec
供使用

openssl rsautl-pubin-inkey key.pub-encrypt-in message.txt-out message.enc

您需要定义选项-raw以忽略填充:)

openssl rsautl-pubin-inkey key.pub-encrypt-in message.txt-out message.enc-raw


enc-对称密码例程
因此您应该使用
rsautl

正确的解决方案:

在发送方侧

  • 生成密码短语
  • 使用带有密码短语的
    enc
    加密您的邮件
  • 使用带有公钥的
    rsautl
    加密密码短语
  • 发送编码消息和编码密码短语
  • 在接收器侧

  • 使用带有私钥的
    rsautl
    解密密码短语
  • 使用带有密码短语的
    enc
    解密消息

  • 这个方法使用一个简单的密码文本文件就可以很好地工作,但是我需要使用我的公钥进行加密,然后使用我的私钥进行解密。这个方法有效:openssl rsautl-pubin-inkey-key.pub-encrypt-in message.txt-out message.enc openssl rsautl-inkey privkey.pem-decrypt-in message.enc-out message.dec问题是你只能使用它加密小消息。如果您尝试加密任何超过密钥大小减去11字节的内容,您将收到一条错误消息,如:rsa例程:rsa\u padding\u add\u PKCS1\u type\u 2:对于密钥大小而言,数据太大
    enc-对称密码例程
    ,因此您应该使用
    rsautl