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

时间:2010-03-06 21:26:46

标签: 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 

解密时出错

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

4 个答案:

答案 0 :(得分:4)

此代码有效:

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

答案 1 :(得分:1)

使用

  

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

答案 2 :(得分:1)

enc - symmetric cipher routines所以你应该使用rsautl

正确的解决方案:

发件人方

  1. 生成密码短语
  2. 使用密码短语
  3. enc加密邮件
  4. 使用带有公钥的rsautl加密密码短语
  5. 发送已编码的邮件和已编码的密码
  6. 在接收方

    1. 使用带私钥的rsautl解密密码短语
    2. 使用enc使用密码短语解密邮件

答案 3 :(得分:0)

加密:

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的第一行包含您的密码。