iOS常見加密算法對比

MD5加密

MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數(shù)字字母混合碼。

MD5算法還具有以下性質:

1、壓縮性:任意長度的數(shù)據(jù),算出的MD5值長度都是固定的。

2、容易計算:從原數(shù)據(jù)計算出MD5值很容易。

3、抗修改性:對原數(shù)據(jù)進行任何改動,哪怕只修改1個字節(jié),所得到的MD5值都有很大區(qū)別。

4、弱抗碰撞:已知原數(shù)據(jù)和其MD5值,想找到一個具有相同MD5值的數(shù)據(jù) 是非常困難的。

5、強抗碰撞:想找到兩個不同的數(shù)據(jù),使它們具有相同的MD5值,是非常困難的。

MD5雖然說是不可逆的,但是由于有網(wǎng)站http://www.cmd5.com的存在,專門用來查詢MD5碼,所以有的簡單的MD5碼是可以在這里搜到源碼的。為了讓MD5碼更加安全 涌現(xiàn)了很多其他方法,如加鹽。鹽要足夠長足夠亂得到的MD5碼就很難查到。

SHA1加密

哈希算法主要適用于數(shù)字簽名標準里面定義的數(shù)字簽名算法。對于長度小于2-64位的消息,SHA1會產(chǎn)生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數(shù)據(jù)的完整性。在傳輸?shù)倪^程中,數(shù)據(jù)很可能會發(fā)生變化,那么這時候就會產(chǎn)生不同的消息摘要。

SHA1特性:不可以從消息摘要中復原信息;兩個不同的消息不會產(chǎn)生同樣的消息摘要。

HMAC加密

此加密方法需要先生成密鑰,然后再對密碼進行MD5和HMAC加密,數(shù)據(jù)庫中需要存放當時使用的密鑰和密碼加密后的密文,在用戶登陸時 再次對填入的密碼用密鑰進行加密 并且還要加上當前時間,再次HMAC加密,服務器里也會拿出以前存放的密文加上時間再次加密。所以就算黑客在中途截取了密碼的密文 也在能在1分鐘只能破譯才能有效,大大加強了安全性。服務器為了考慮到網(wǎng)絡的延遲一般會多算一種答案。

iOS常見加密算法對比

base64加密

在MIME格式的電子郵件中,base64可以用來將binary的字節(jié)序列數(shù)據(jù)編碼成ASCII字符序列構成的文本。使用時,在傳輸編碼方式中指定base64。使用的字符包括大小寫字母各26個,加上10個數(shù)字,和加號“+”,斜杠“/”,一共64個字符,等號“=”用來作為后綴用途。

完整的base64定義可見RFC 1421和RFC 2045。編碼后的數(shù)據(jù)比原始數(shù)據(jù)略長,為原來的4/3。

RSA加密

RSA加密算法需要兩個密鑰:公開密鑰和私有密鑰,公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應的公開密鑰才能解密

RSA加密算法 特點:算法強度復雜、安全性依賴于算法與密鑰,但是由于其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快,對稱密碼體制中只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了

但是RSA加密算法效率較差,對大型數(shù)據(jù)加密時間很長,一般用于小數(shù)據(jù)。