通常一提到加密,大家往往瞬间就会在脑海中浮现出几个词:MD5,Base64,AES,DES......iOS的加密方式有很多种,下面我们首先对加密的种类来加以区分:
一:是否有秘钥
无秘钥加密:Base64和MD5都是缺少加密方式的加密。Base64只是对数据进行了格式的转化,并且MD5的加密又是不可逆的(即无法通过解密来获得原实体)。
有加密方式(秘钥)的加密:主要包含对称加密和非对称加密(加密方法下文有介绍)。在项目中真正一般用来加密数据的方式是有加密方式的加密,也就是有秘钥的加密。这些加密后的数据都是可逆的,能够根据秘钥重新解密。
二:是否对称加密
对称加密:主要涉及到如AES,3DES等加密。此种加密的秘钥在加密和解密的时候都是相同的。
非对称加密:主要涉及到如RSA加密(或加签),此种加密的秘钥是不同的,分为公钥和私钥,在RSA加密时,一般是把公钥放在客户端来加密,私钥上传 用来解密(RSA加签则不同)。
项目中的应用:在项目的应用中,大多采取对称加密的方式(简单易操作)来加密,如将数据AES加密并Base64转码后上传到服务器,当然了,服务器也可以对数据 加密后通过API调用传给客户端,具体实现方法要根据业务来选择。 如果觉得还是不够稳妥,可以对称加密和非对称加密混合起来一起使用。也就是对对称加密的秘钥再来一次非对称加密(如RSA),这样可以是你的数据 在后台与客户端传递起来更加的安全可靠!当然了,操作起来也会麻烦一些。
附录: 应用于iOS的RSA秘钥证书生成起来比较麻烦一点,我们在进行RSA加密时需要获取到公钥的.der证书和私钥的.p12证书,通过openssl命令即可完成操作,终端里已经装有openssl,所以直接通过终端即可操作。
下面的链接是证书生成指南,不明白的朋友可以看看。 生成证书网址:http://www.jianshu.com/p/a1bad1e2be55
GitHub上的源码地址:https://github.com/mszren/Secrectry