常用加密演算法解析

今天介紹下工作當中常用的加密演算法、分類、應用。

1、對稱加密演算法

所謂對稱,就是採用這種加密方法的雙方使用方式用同樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。演算法是一組規則,規定如何進行加密和解密。

分類

常用的演算法有:DES、3DES、AES等。

DES

全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊演算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),並授權在非密級政府通信中使用,隨後該演算法在國際上廣泛流傳開來。

3DES

即TripleDES,是DES向AES過渡的加密演算法,它使用3條56位的密鑰對數據進行三次加密。是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密演算法。比起最初的DES,3DES更為安全。

Advertisements

AES

全稱為Advanced Encryption Standard,在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。

優缺點

對稱加密演算法的優點是演算法公開、計算量小、加密速度快、加密效率高。

對稱加密演算法的缺點是在數據傳送前,發送方和接收方必須商定好秘鑰,然後使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那麼加密信息也就不安全了。另外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔。

應用

保存用戶手機號、身份證等敏感但能解密的信息

Advertisements

2、非對稱性加密演算法

與對稱加密演算法不同,非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。

分類

常用的演算法有:RSA、DSA、ECC等。

RSA

全稱為Digital Signature Algorithm,是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰演算法,從提出到現今的三十多年裡,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。

DSA

全稱為Digital Encryption Standard,是基於整數有限域離散對數難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數公開,這樣,當使用別人的p和q時,即使不知道私鑰,你也能確認它們是否是隨機產生的,還是作了手腳。RSA演算法卻做不到。

ECC

全稱為Elliptic Curves Cryptography,,也叫橢圓加密演算法,是一種公鑰加密體制,最初由Koblitz和Miller兩人於1985年提出,其數學基礎是利用橢圓曲線上的有理點構成Abel加法群上橢圓離散對數的計算困難性。

與RSA,DSA相比,ECC有以下優點:

安全性高,有研究表示160位的橢圓密鑰與1024位的RSA密鑰安全性相同。

處理速度快,在私鑰的加密解密速度上,ecc演算法比RSA、DSA速度更快。

存儲空間佔用小。

帶寬要求低.

優缺點

非對稱加密與對稱加密相比,其安全性更好:對稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那麼整個通信就會被破解。而非對稱加密使用一對秘鑰,一個用來加密,一個用來解密,而且公鑰是公開的,秘鑰是自己保存的,不需要像對稱加密那樣在通信之前要先同步秘鑰。

非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量數據進行加密。

應用

一般用於簽名和認證

3、散列演算法

在信息安全技術中,經常需要驗證消息的完整性,散列(Hash)函數提供了這一服務,它對不同長度的輸入消息,產生固定長度的輸出。這個固定長度的輸出稱為原輸入消息的「散列」或「消息摘要」(Message digest)。

分類

常用的演算法有:MD5、SHA、HMAC等。

MD5

全稱為Message Digest Algorithm,即中文名為消息摘要演算法第五版,為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。

SHA

全稱為Secure Hash Algorithm,即安全哈希演算法,主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。有SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512這幾種單向散列演算法,其中SHA-1已經不安全。

HMAC

全稱為Hash Message Authentication Code,即散列消息鑒別碼,主要是利用哈希演算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。一般的,消息鑒別碼用於驗證傳輸於兩個共 同享有一個密鑰的單位之間的消息。HMAC 可以與任何迭代散列函數捆綁使用。MD5 和 SHA-1 就是這種散列函數。HMAC 還可以使用一個用於計算和確認消息鑒別值的密鑰。

應用

效驗下載文件正確性,一般在網站上下載文件都能見到

存儲用戶敏感信息,如密碼、 卡號等不可解密的信息

建議

AES採用128為即可,RSA建議採用1024位的數字,ECC建議採用160位。RSA加密字元長度有限制,一般採用AES+RSA方式組合使用。


誤區

很多博客把Base64編碼也當做一種加密演算法來解釋,這是不嚴謹的。Base64是沒有可讀性,但不代表這個編碼就是加密的。加密需要保證沒有密鑰的人無法解密信息,更無法從密文中破解任何明文信息,但Base64可以很輕鬆的反編碼。另外,Base64編碼也顯然沒有用到密鑰,不具有加密演算法的安全性,所以,這個誤區大家要糾正過來。

關注我的頭條號,每天一篇乾貨,進步不是一點點!

Advertisements

你可能會喜歡