iOS常見加密算法

一 、MD5加密

MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特徵生成一段32位的數字字母混合碼。
MD5主要特點是 不可逆,相同數據的MD5值肯定一樣,不同數據的MD5值不一樣(也不是絕對的,但基本是不能一樣的)。
MD5算法還具有以下性質:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即僞造數據)是非常困難的。
5、強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。
MD5雖然說是不可逆的,但是由於有網站http://www.cmd5.com的存在,專門用來查詢MD5碼 所以有的簡單的MD5碼是可以在這裏搜到源碼的。爲了讓MD5碼更加安全 湧現了很多其他方法 如加鹽。 鹽要足夠長足夠亂 得到的MD5碼就很難查到。

二.SHA1加密

安全哈希算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裏面定義的數字簽名算法(Digital Signature Algorithm DSA)。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麼這時候就會產生不同的消息摘要。
SHA1有如下特性:不可以從消息摘要中復原信息;兩個不同的消息不會產生同樣的消息摘要。

三.HMAC加密

此加密方法需要先生成密鑰,然後再對密碼進行MD5和HMAC加密,數據庫中需要存放當時使用的密鑰和密碼加密後的密文,在用戶登陸時 再次對填入的密碼用密鑰進行加密 並且還要加上當前時間(精確到分鐘) 再次HMAC加密,服務器裏也會拿出以前存放的密文加上時間再次加密。所以就算黑客在中途截取了密碼的密文 也在能在1分鐘只能破譯纔能有效,大大加強了安全性。服務器爲了考慮到網絡的延遲一般會多算一種答案,如23分過來的密碼 他會把23分和22分的都算一下和用戶匹配只要對上一個就允許登陸。如圖 用戶註冊與用戶登錄

這裏寫圖片描述

四.base64加密

在MIME格式的電子郵件中,base64可以用來將binary的字節序列數據編碼成ASCII字符序列構成的文本。使用時,在傳輸編碼方式中指定base64。使用的字符包括大小寫字母各26個,加上10個數字,和加號“+”,斜槓“/”,一共64個字符,等號“=”用來作爲後綴用途。
完整的base64定義可見RFC 1421和RFC 2045。編碼後的數據比原始數據略長,爲原來的4/3。
原理圖
這裏寫圖片描述

終端指令先cd 找到當前目錄加密: base64abc.pngoabc.txt base64 abc.txt -o 123.png -D

五.對稱加密算法

優點:算法公開、計算量小、加密速度快、加密效率高、可逆
缺點:雙方使用相同鑰匙,安全性得不到保證
現狀:對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密,相較於DES和3DES算法而言,AES算法有着更高的速度和資源使用效率,安全級別也較之更高了,被稱爲下一代加密標準
nECB :電子代碼本,就是說每個塊都是獨立加密的nCBC :密碼塊鏈,使用一個密鑰和一個初始化向量 (IV)對數據執行加密轉換
ECB和CBC區別:CBC更加複雜更加安全,裏面加入了8位的向量(8個0的話結果等於ECB)。在明文裏面改一個字母,ECB密文對應的那一行會改變,CBC密文從那一行往後都會改變。
ECB終端命令:

$ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.binCBC終端命令:$ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.txt -out msg2.bin  

六.RSA加密

RSA非對稱加密算法
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密
特點:非對稱密碼體制的特點:算法強度複雜、安全性依賴於算法與密鑰,但是由於其算法複雜,而使得加密解密速度沒有對稱加密解密的速度快,對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了
基本加密原理:
(1)找出兩個“很大”的質數:P & Q
(2)N = P * Q
(3)M = (P – 1) * (Q – 1)
(4)找出整數E,E與M互質,即除了1之外,沒有其他公約數
(5)找出整數D,使得E*D除以M餘1,即 (E * D) % M = 1

經過上述準備工作之後,可以得到:E是公鑰,負責加密D是私鑰,負責解密N負責公鑰和私鑰之間的聯繫加密算法,假定對X進行加密(X ^ E) % N = Yn根據費爾馬小定義,根據以下公式可以完成解密操作(Y ^ D) % N = X
但是RSA加密算法效率較差,對大型數據加密時間很長,一般用於小數據。常用場景:分部要給總部發一段報文,先對報文整個進行MD5得到一個報文摘要,再對這個報文摘要用公鑰加密。然後把報文和這個RSA密文一起發過去。總部接收到報文之後要先確定報文是否在中途被人篡改,就先把這個密文用私鑰解密得到報文摘要,再和整個報文MD5一下得到的報文摘要進行對比 如果一樣就是沒被改過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章