iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

这里写图片描述

这里写图片描述

应用场景:集成支付宝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。

客户端与服务器加密数据传递的实际操作-数字签名

这里写图片描述

客户端将数据传递给服务器的时候,很有可能在传递过程中被其他人员拦截,并修改,再发送给服务器,此时,服务器收到数据后是没有办法判断此数据是否是被修改过的,那么有什么解决办法呢?我们可以使用数字签名。

数字签名流程

客户端:

  1. 数据报文(客户端发送给服务器的数据),通过HASH算法进行MD5加密获取32位字符串(数据指纹),注意此MD5字符串是不可逆的
  2. 再通过RSA使用公钥加密算法加密MD5字符串,加密之后的密文就是数字签名
  3. 同时把数据报文与数字签名发送给服务器

服务器:

  1. 服务器拿到数据报文与数字签名后,通过私钥解密数字签名,拿到MD532位字符串
  2. 再把数据报文进行MD5加密,获取加密后的MD532位字符串
  3. 服务器通过步骤1和步骤2分别获取的MD5串对比,判断此数据报文是否有被篡改过

PKCS

PKCS是什么呢?

Public-Key Cryptography Standards (PKCS)是由美国 RSA 数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议

这里写图片描述

开发中证书的生成

这里写图片描述

我们实际开发中需要p12文件和.der两个文件

这里写图片描述

下篇文章介绍RSA加密算法的代码实现

猜你喜欢

转载自blog.csdn.net/wtdask/article/details/80342005
今日推荐