初体验
1. 疑问
运行了Demo,第一反应是高兴,第二反应肯定会产生疑问:
<li>1,Demo中的公钥和私钥是怎么来的?</li>
<li>2,VKRSA和VKRSAKeyHelper这两个类代码看上去好复杂,怎么去理解?</li>
1.1 解析
回顾开篇讲到的RSA的工作原理:
<li>1.生成私钥和公钥</li>
Demo中已经自动集成了已经生成好的公钥和私钥
<li>2.用公钥对原始数据进行加密,得到密文</li>
Demo中VKRSA类中封装了加密操作,外部调用即可
<li>3.用私钥对密文进行解密,得到原始数据</li>
Demo中VKRSA类中封装了解密操作,外部调用即可
1.2 密钥的生成
目前最通用生成RSA密钥的方式通过openssl工具来签发公钥和私钥。当然也有其他方式,比如自己写程序生成密钥对,java(Security包)、C++(openssl SDK)、OC(Security.framework)都有对应的函数接口。这里主要讲通过openssl工具来生成密钥对。
1.2.1 openssl签发密钥对顺序
当然,如果没有openssl的环境,需要安装一个,相信你肯定可以快速自行解决。密钥对步骤如下:
<li><h5>1.生成私钥文件</li>
terminal:openssl genrsa -out rsa_private_key.pem 1024
说明:“rsa_private_key.pem”为生成私钥pem文件名,”1024“是指私钥长度。
执行成功会在当前文件夹下生成rsa_private_key.pem的私钥文件
<li><h5>2.通过生成的私钥文件签发一个公钥文件</li>
terminal:openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
说明:“rsa_private_key.pem”为第一步生成私钥文件,"rsa_public_key.pem"为导出的公钥文件
<li><h5>3.把生成的私钥文件转成pkcs8格式的pem文件</li>
terminal:openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem
注意:“ -out rsa_private_key_pkcs8.pem”必须加上,不然会把内容输出到terminal,而且内容还不同。具体原因未仔细查询,如有同学知道,请通知我,感谢!
整个流程如下图
如下图所示
1.2.2 密钥文件格式说明
未完...下次更新