Linux 生成RSA公私钥

1、生成原始RSA私钥文件

openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。

语法

openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]

使用举例

openssl genrsa -out rsa_private_key.pem

Linux 生成RSA公私钥

从输出可以看出,密钥长度默认是2048bit。我们也可以指定密钥长度,密钥长度越长越安全,但使用密钥进行加解密时所耗费的时间也会变长。非对称密钥提高安全性的同时也带来了算法所耗费的大量时间,非对称密钥不对大块数据进行加密,应用领域是数字签名,密钥分发等小数据加密。

参数解析:

  • openssl:是一个自由的软件组织,专注做加密和解密的框架;
  • genrsa:指定了生成了算法使用RSA;
  • -out:后面的参数表示生成的key的输入文件;
  • -passout arg:对生成的rsa私钥文件施加密码保护,例:-passout pass:123
  • -des:采用des算法加密;
  • numbits:表示的是密钥长度,单位字节(bit),至少为500位长,一般推荐使用1024位;

2、把RSA私钥转换成PKCS8格式

Java需要使用的私钥需要经过PKCS#8编码,PHP程序不需要

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem

参数解析:

-nocrypt:不采用任何二次加密

3、由原始的rsa私钥文件生成公钥文件

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem