一般在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
的另外一個字段傳過去。