应用场景:集成支付宝SDK,会看见,p12文件也有。
非对称加密算法
一.运行终端,生成私钥
1.cd /Users/mac/Desktop/iOS/加密
2.openssl genrsa -out private.pem 512 //生成私钥,注意:这个私钥其实是放在服务器的
3.openssl rsa -in private.pem -out public.pem -pubout //通过2生成的私钥获取公钥
4.我们会发现已经在加密文件下,创建成功了两个文件
5.cat private.pem //打开私钥,可以看见base64编码的文件格式
6. openssl rsa -in private.pem -text -out private.txt //转换成明文格式打开看看
RSA加密使用效率偏低,它有哪些应用场景呢?
我们都知道私钥是放在服务端的,公钥是在客户端的。何为公钥?公钥可以理解为公共钥匙,任何客户端都可以向服务器获取公钥。当你的项目在被做逆向的时候,其他人就可以模仿客户端来获取公钥,所以没有绝对的安全,只有相对的安全。因此我们的重要数据仍然需要做加密处理。我们知道OC的方法调用和函数调用是不一样的,方法调用可以显示方法名,而函数调用则返回的是内存地址。所以在大公司中,一些核心算法都是使用的C。
客户端与服务器加密数据传递的实际操作-数字签名
客户端将数据传递给服务器的时候,很有可能在传递过程中被其他人员拦截,并修改,再发送给服务器,此时,服务器收到数据后是没有办法判断此数据是否是被修改过的,那么有什么解决办法呢?我们可以使用数字签名。
数字签名流程
客户端:
- 数据报文(客户端发送给服务器的数据),通过HASH算法进行MD5加密获取32位字符串(数据指纹),注意此MD5字符串是不可逆的
- 再通过RSA使用公钥加密算法加密MD5字符串,加密之后的密文就是数字签名
- 同时把数据报文与数字签名发送给服务器
服务器:
- 服务器拿到数据报文与数字签名后,通过私钥解密数字签名,拿到MD532位字符串
- 再把数据报文进行MD5加密,获取加密后的MD532位字符串
- 服务器通过步骤1和步骤2分别获取的MD5串对比,判断此数据报文是否有被篡改过
PKCS
PKCS是什么呢?
Public-Key Cryptography Standards (PKCS)是由美国 RSA 数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议
开发中证书的生成
我们实际开发中需要p12文件和.der两个文件
下篇文章介绍RSA加密算法的代码实现