? ? ?通常一提到加密,大家往往瞬間就會(huì)在腦海中浮現(xiàn)出幾個(gè)詞:MD5,Base64,AES,DES......iOS的加密方式有很多種,下面我們首先對(duì)加密的種類來加以區(qū)分:
? ? ? ? ? ? 一:是否有秘鑰
? ? ? ? ? ?無秘鑰加密:Base64和MD5都是缺少加密方式的加密。Base64只是對(duì)數(shù)據(jù)進(jìn)行了格式的轉(zhuǎn)化,并且MD5的加密又是不可逆的(即無法通過解密來獲得原實(shí)體)。



? ? ? ? ? ? 有加密方式(秘鑰)的加密:主要包含對(duì)稱加密和非對(duì)稱加密(加密方法下文有介紹)。在項(xiàng)目中真正一般用來加密數(shù)據(jù)的方式是有加密方式的加密,也就是有秘鑰的加密。這些加密后的數(shù)據(jù)都是可逆的,能夠根據(jù)秘鑰重新解密。
? ? ? ? ? ?二:是否對(duì)稱加密
? ? ? ? ? ?對(duì)稱加密:主要涉及到如AES,3DES等加密。此種加密的秘鑰在加密和解密的時(shí)候都是相同的。?

? ? ? ? ??非對(duì)稱加密:主要涉及到如RSA加密(或加簽),此種加密的秘鑰是不同的,分為公鑰和私鑰,在RSA加密時(shí),一般是把公鑰放在客戶端來加密,私鑰上傳 用來解密(RSA加簽則不同)。

? ? ? ? ?項(xiàng)目中的應(yīng)用:在項(xiàng)目的應(yīng)用中,大多采取對(duì)稱加密的方式(簡單易操作)來加密,如將數(shù)據(jù)AES加密并Base64轉(zhuǎn)碼后上傳到服務(wù)器,當(dāng)然了,服務(wù)器也可以對(duì)數(shù)據(jù) 加密后通過API調(diào)用傳給客戶端,具體實(shí)現(xiàn)方法要根據(jù)業(yè)務(wù)來選擇。 如果覺得還是不夠穩(wěn)妥,可以對(duì)稱加密和非對(duì)稱加密混合起來一起使用。也就是對(duì)對(duì)稱加密的秘鑰再來一次非對(duì)稱加密(如RSA),這樣可以是你的數(shù)據(jù) 在后臺(tái)與客戶端傳遞起來更加的安全可靠!當(dāng)然了,操作起來也會(huì)麻煩一些。
附錄: 應(yīng)用于iOS的RSA秘鑰證書生成起來比較麻煩一點(diǎn),我們在進(jìn)行RSA加密時(shí)需要獲取到公鑰的.der證書和私鑰的.p12證書,通過openssl命令即可完成操作,終端里已經(jīng)裝有openssl,所以直接通過終端即可操作。
下面的鏈接是證書生成指南,不明白的朋友可以看看。 生成證書網(wǎng)址:http://www.itdecent.cn/p/a1bad1e2be55
GitHub上的源碼地址:https://github.com/mszren/Secrectry