美文网首页
iOS开发中数据传输使用AES+RSA加密

iOS开发中数据传输使用AES+RSA加密

作者: 阿伦LLLLL | 来源:发表于2018-11-14 13:42 被阅读0次

前段时间工作的内容中涉及到传输数据的加密,加密方式是AES+RSA,具体过程中也参考了一些网上的文章,简单写一个记录。

加密的原理这里就不具体说了,网上可以查到各种文章,这里简单说一下实现的逻辑。首先AES为对称加密,加密解密用同一个密钥,RSA为非对称加密,加密解密过程需要使用到一个公钥和一个私钥。

我们项目中的逻辑是这样的:首先客户端需要用到的有客户端私钥和服务器公钥。

第一步首先对数据进行签名。取出字典中数据的所有value,转换成字符串格式然后进行拼接,然后使用客户端的私钥进行签名,得到签名字符串,然后以加入到原始数据的字典里。之后将这个新的添加了签名的字典转换成json格式的字符串,便得到需要加密的数据。这里要注意的是,验签成功的条件是,最终传输的json字符串中的数据需要和和你签名的value字符串顺序一致,当然忽略签名数据。

这里有一个坑。我在实现这部分功能的时候,为了保持顺序一致,先按照key给数据进行了排序,取这个顺序的value进行拼接并签名,然后使用如下方式整个数据进行转json字符串。

字典转json字符串

这时候,iOS 11和以后的版本和之前的版本得到的结果的顺序是不一样的。iOS 11以后的顺序和按照key排序得到的顺序是一致的,而iOS 11之前的版本是另一个固定的顺序,这就导致直接使用这个数据的话iOS 11之前的版本会验签失败。处理这种情况,我的思路有两种,一是换一种转json的方式,自己写一个转json的逻辑自己控制顺序,二是转换出字符串之后把取出各个key的位置,排个序,按这个顺序重新拼一下value,签名,之后替换掉原来的签名。

 得到了数据之后,客户端本地生成一个随机字符串作为AES密钥,然后使用该密钥对数据进行加密得到加密之后的数据1,再使用服务器公钥对AES密钥进行加密,得到加密之后的数据2,给服务器传输这两个数据。

接收返回的数据时,先用客户端私钥对返回数据的数据2进行解密,取得AES密钥,再使用该密钥对数据1进行解密得到返回数据。

简单的Demo传送门https://github.com/AllenMu/LJYAES-RSA

有任何问题欢迎指正

相关文章

  • iOS开发中数据传输使用AES+RSA加密

    前段时间工作的内容中涉及到传输数据的加密,加密方式是AES+RSA,具体过程中也参考了一些网上的文章,简单写一个记...

  • AES+RSA加密联合使用

    AES+RSA加密联合使用 使用原因: 因为加密解密效率的问题 使用方式前端:前端对需要加密的数据进性AES加密,...

  • iOS使用AES+RSA加密

    由于项目中,登录请求过程中涉及到用户数据的传输,为了用户数据的安全性考虑,决定在请求与相应中使用加密传输的方式。查...

  • 谈谈iOS加密:AES+RSA

    最近在项目中需要对用户信息及数据传输进行加密,网上搜索了下相关信息,最后决定采用AES+RSA的方式。AES:对称...

  • IOS安全加密

    IOS安全加密是我们在做网络开发中必不可少的部分。关于加密算法的几个分类: 对称加密a.原理:加密解密都使用相同的...

  • 面试题总结

    1. iOS开发中的加密方式 iOS加密相关算法框架:CommonCrypto。 对称加密: DES、3DES、A...

  • JS 使用加密工具对数据进行加密解密

    前言:在数据交互的过程中难免会使用数据加密的方式进行数据传输,其主要的数据传输时使用加密的比较多的是登录模块,用户...

  • iOS NFC 加密功能实现

    ios NFC加密功能实现 前言:记录一下ios开发中NFC添加密码功能,卡类型为(NFCMiFareTag --...

  • iOS中的RSA加密算法使用

    使用场景:iOS中部分隐私数据进行加密之后再传输到服务端 原理:在iOS开发中将需要加密的NSString类型的字...

  • iOS几种加密方式

    iOS 几种加密方法2017-06-19 [iOS开发] iOS常见的几种加密方法 普通加密方法是讲密码进行加密后...

网友评论

      本文标题:iOS开发中数据传输使用AES+RSA加密

      本文链接:https://www.haomeiwen.com/subject/lkrdfqtx.html