一般在iOS開發(fā)中,用到加解密的場景主要是網(wǎng)絡(luò)傳輸,比如會(huì)在http的header里面加一個(gè)sign字段,填的就是MD5只。另外就是登陸注冊模塊,用戶名和密碼的存儲(chǔ)和傳輸,總不能用明文吧?(現(xiàn)實(shí)中很多就是明文直接傳的)
在實(shí)際開發(fā)過程中,加解密算法,具體怎么做,一般都是后臺(tái)定的,iOS客戶端只是做配合。
總之就是,加解密在iOS客戶端開發(fā)過程中占得比例很小,并且往往只是配合的角色。
雖然不重要,但是不可缺少,一些基礎(chǔ)知識(shí)還是要了解的。
非對(duì)稱加密
常用算法是
RSA;DSA、ECC什么的據(jù)說也是,沒用過蘋果市場的證書管理,這個(gè)繁瑣過程基本都遇到過,這個(gè)就是非常典型的場景
-
AFNetworking使用自定義私有證書的方案。不過這樣用的人很少,基本上是不用證書驗(yàn)證的。本人接觸過的四五個(gè)
App,只有一個(gè)是這么做的。
公鑰與私鑰這篇文章寫得非常好,理解非對(duì)稱加密的原理講得很清晰
(1)一般會(huì)把“私有證書”,(.cer文件),直接打包在iOS客戶端,這里包含公鑰;私鑰保存在服務(wù)端;
(2)用“私有證書”中的公鑰解密,拿到信息的摘要;
(3)對(duì)信息進(jìn)行本地摘要計(jì)算
(4)比較兩個(gè)摘要是否一直,對(duì)收到的信息進(jìn)行驗(yàn)證。
對(duì)稱加密
常用算法是
AES、DES、3DES;DES在實(shí)際的項(xiàng)目中遇到過經(jīng)歷過的使用場景是熱更新,將
JSPatch接入工程;熱更新文件是代碼,所以需要加密,加解密用的
key直接寫在客戶端。由于要存文件,所以要引入
Base64編碼,(不是加密,也不是摘要)。
摘要
常用算法是
MD5、SHA、HMAC;其中MD5用的最多幾乎每個(gè)項(xiàng)目都用到了
MD5,有些還有直接寫在客戶端的key,應(yīng)該是所謂的“加鹽”。固定的只是“鹽”的一部分,一般還會(huì)配上時(shí)間戳,而這個(gè)時(shí)間戳?xí)?code>http的header的另外一個(gè)字段傳過去。
參考文章
iOS - 加解密(對(duì)稱,非對(duì)稱)(AES DES base64這里都有),數(shù)字簽名,cookie