iOS常見加密算法對(duì)比

MD5加密

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

MD5算法還具有以下性質(zhì):

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

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

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

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

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

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

SHA1加密

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

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

HMAC加密

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

iOS常見加密算法對(duì)比

base64加密

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

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

RSA加密

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

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

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