Openssl RSA基本加解密操作

1. 产生私钥 (private key)

$ openssl genrsa -out key.pem 1024

结果是生成一个私钥文件: key.pem

$ file key.pem 
key.pem: PEM RSA private key

2. 产生对应的公钥 (public key)

$ openssl rsa -in key.pem -pubout -out pub.pem

结果是生成一个公钥文件: pub.pem

$ file pub.pem 
pub.pem: ASCII text

3. 使用公钥来加密字符串

因为openssl加密的是字节流, 为了便于观察, 我们的例子把所有的输入输出变成可读字符串,对于密文使用base64进行编码

$ echo -n "abcd" | openssl rsautl -encrypt -oaep -pubin -inkey pub.pem | openssl enc -A -base64
V6OdcZsflfYmQw0hMmf1Vg/X3N92JU7uIg2DxXQCJLoybo1TYvP+Nh944MuoVy+Z9BxE5h1sea8TIS81RXYAhif3rIy0FPNThNZcy1ryVu5odNLX/P01WdMYzYZvj5opoWka23cw5s5DnQJBklh9hLDiPcFR+8vuf0oEj+RsB24=

4. 使用私钥来解密前面生成的加密串

$ export CIPHER="V6OdcZsflfYmQw0hMmf1Vg/X3N92JU7uIg2DxXQCJLoybo1TYvP+Nh944MuoVy+Z9BxE5h1sea8TIS81RXYAhif3rIy0FPNThNZcy1ryVu5odNLX/P01WdMYzYZvj5opoWka23cw5s5DnQJBklh9hLDiPcFR+8vuf0oEj+RsB24="
$ echo -n ${CIPHER} | openssl enc -A -base64 -d | openssl rsautl -decrypt -oaep -inkey key.pem
abcd

5. 参数说明

  • -inkey file
    the input key file, by default it should be an RSA private key.
  • -pubin
    the input file is an RSA public key.
  • -encrypt
    encrypt the input data using an RSA public key.
  • -decrypt
    decrypt the input data using an RSA private key.
  • -oaep
    the padding algorithm is used, optimal asymmetric encryption padding (OAEP)

你可能感兴趣的:(Openssl RSA基本加解密操作)