生成RSA密钥一般使用的Openssl,方法如下:
在终端输入命令openssl然后敲回车,进入openssl命令输入模式,如下:
然后输入一下三行命令:
1 | genrsa -out rsa_private_key.pem 1024 |
然后输入exit退出openssl命令输入模式,这样会在当前目录生成三个文件,如下:
其中:
- rsa_private_key.pem为私钥
- rsa_public_key.pem为公钥
- pkcs8_rsa_private_key.pem为PKCS#8编码的私钥
公钥没有问题,主要是私钥,私钥有两个,两个有什么区别,到底该用哪一个呢?
主要区别在于:
- rsa_private_key.pem为PKCS#1编码,只包含RSA的密钥信息,是以”—–BEGIN RSA PRIVATE KEY—–”开头,以”—–END RSA PRIVATE KEY—–”结尾,如下图:
- pkcs8_rsa_private_key.pem为PKCS#8编码,除了包含RSA密钥信息外,还包含一些附加信息,例如version和算法等,是以”—–BEGIN PRIVATE KEY—–”开头,以”—–END PRIVATE KEY—–”结尾的,如下图:
Mac默认生成的是PKCS#1编码的私钥,而有的系统生成私钥是PKCS#8编码,具体用哪个这要看你的加密代码里是否对附加信息进行了校验判断,如果进行了校验,则应该使用PKCS#8编码的私钥,否则应该使用PKCS#1编码的私钥。
我使用的是这个第三方库进行加密解密的,里面对附加信息进行了校验,所以应该使用PKCS#8编码的密钥。
参考资料
Objective-C-RSA
Objective-C-RSA Issuse #15
openssl生成RSA格式,并转为pkcs8格式