一般在iOS
开发中,用到加解密的场景主要是网络传输,比如会在http
的header
里面加一个sign
字段,填的就是MD5
只。另外就是登陆注册模块,用户名和密码的存储和传输,总不能用明文吧?(现实中很多就是明文直接传的)
在实际开发过程中,加解密算法,具体怎么做,一般都是后台定的,iOS
客户端只是做配合。
总之就是,加解密在iOS
客户端开发过程中占得比例很小,并且往往只是配合的角色。
虽然不重要,但是不可缺少,一些基础知识还是要了解的。
非对称加密
常用算法是
RSA
;DSA、ECC
什么的据说也是,没用过苹果市场的证书管理,这个繁琐过程基本都遇到过,这个就是非常典型的场景
-
AFNetworking使用自定义私有证书的方案。不过这样用的人很少,基本上是不用证书验证的。本人接触过的四五个
App
,只有一个是这么做的。
公钥与私钥这篇文章写得非常好,理解非对称加密的原理讲得很清晰
(1)一般会把“私有证书”,(.cer文件),直接打包在iOS客户端,这里包含公钥;私钥保存在服务端;
(2)用“私有证书”中的公钥解密,拿到信息的摘要;
(3)对信息进行本地摘要计算
(4)比较两个摘要是否一直,对收到的信息进行验证。
对称加密
常用算法是
AES、DES、3DES
;DES
在实际的项目中遇到过经历过的使用场景是热更新,将
JSPatch
接入工程;热更新文件是代码,所以需要加密,加解密用的
key
直接写在客户端。由于要存文件,所以要引入
Base64
编码,(不是加密,也不是摘要)。
摘要
常用算法是
MD5、SHA、HMAC
;其中MD5
用的最多几乎每个项目都用到了
MD5
,有些还有直接写在客户端的key
,应该是所谓的“加盐”。固定的只是“盐”的一部分,一般还会配上时间戳,而这个时间戳会在http
的header
的另外一个字段传过去。