淺析DES、AES、RSA、MD5加密算法及其應(yīng)用場(chǎng)景

淺析DES、AES、RSA、MD5加密算法及其應(yīng)用場(chǎng)景

對(duì)稱加密算法
DES 算法:一種典型的塊加密方法,將固定長(zhǎng)度的明文通過一系列復(fù)雜的操作變成同樣長(zhǎng)度的密文,塊的長(zhǎng)度為64位。同時(shí),DES 使用的密鑰來自定義變換過程,因此算法認(rèn)為只有持有加密所用的密鑰的用戶才能解密密文。 DES 的密鑰表面上是64位的,實(shí)際有效密鑰長(zhǎng)度為56位,其余8位可以用于奇偶校驗(yàn)。

DES 現(xiàn)在已經(jīng)不被視為一種安全的加密算法,主要原因是它使用的56位密鑰過短。為了提供實(shí)用所需的安全性,可以使用 DES 的派生算法 3DES 來進(jìn)行加密

AES 算法:在密碼學(xué)中又稱 Rijndael 加密法,用來替代原先的 DES,已經(jīng)被多方分析且廣泛使用。

非對(duì)稱加密算法
RSA算法:1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他們?nèi)诵帐祥_頭字母命名,是一種獲得廣泛使用的非對(duì)稱加密算法。對(duì)極大整數(shù)做因數(shù)分解的難度決定了 RSA 算法的可靠性。換言之,對(duì)一個(gè)極大整數(shù)做因數(shù)分解愈困難,RSA 算法就愈可靠。假如有人找到一種快速因數(shù)分解的算法的話,那么用 RSA 加密的信息的可靠性就肯定會(huì)極度下降。目前看來找到這樣的算法的可能性非常小。

散列算法
在信息安全領(lǐng)域,將源數(shù)據(jù)經(jīng)過散列算法計(jì)算出數(shù)據(jù)指紋,用于識(shí)別經(jīng)過傳播途徑得到的數(shù)據(jù)是否有誤 ,以保證數(shù)據(jù)的來源真實(shí)性。

MD5算法:MD5 即 Message‐Digest Algorithm 5 ,是計(jì)算機(jī)廣泛使用的散列算法之一,經(jīng)常用于確保信息傳輸?shù)耐暾院鸵恢滦?。MD5 輸入不定長(zhǎng)度信息,經(jīng)過程序流程,生成四個(gè)32位數(shù)據(jù),最后聯(lián)合起來輸出固定128bit長(zhǎng)度的信息摘要。計(jì)算的基本過程為:求余、取余、調(diào)整長(zhǎng)度、與鏈接變量進(jìn)行循環(huán)運(yùn)算、得出結(jié)果。MD5 的前身有 MD2、MD3 和 MD4。

應(yīng)用場(chǎng)景
DES/AES加密速度快,適合大量數(shù)據(jù),處理數(shù)據(jù)后可復(fù)原。

RSA用于保密性時(shí),就是公鑰加密,私鑰解密。 因?yàn)楣€是可以公開了, 那么任何人都可以使用公鑰對(duì)信息進(jìn)行加密,但是只有持有私鑰的人才能正確解密。這樣就保證了信息的保密性,因?yàn)橹挥兴借€持有者才能正確解密。

RSA用于認(rèn)證性時(shí),比如數(shù)字簽名,即私鑰持有者對(duì)信息進(jìn)行簽名,驗(yàn)證者可以根據(jù)公開的公鑰進(jìn)行驗(yàn)證簽名是否正確和有效,即實(shí)現(xiàn)了認(rèn)證性,以及不可抵賴性。

MD5用于完整性,確保信息在傳輸過程保持一致性;用于密碼加密,數(shù)據(jù)庫中不存儲(chǔ)密碼明文,而是存儲(chǔ)其散列值,校驗(yàn)時(shí)比較散列值是否相同

組合使用
采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰,然后用對(duì)稱加密算法加密數(shù)據(jù),使用散列函數(shù)進(jìn)行數(shù)據(jù)摘要。