古詩詞大全網 - 個性簽名 - 常用的加密算法有哪些?

常用的加密算法有哪些?

對稱密鑰加密

對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、***享密鑰加密:這類算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度壹般都很快。

分組密碼

分組密碼 Block Cipher 又稱為“分塊加密”或“塊加密”,將明文分成多個等長的模塊,使用確定的算法和對稱密鑰對每組分別加密解密。這也就意味著分組密碼的壹個優點在於可以實現同步加密,因為各分組間可以相對獨立。

與此相對應的是流密碼:利用密鑰由密鑰流發生器產生密鑰流,對明文串進行加密。與分組密碼的不同之處在於加密輸出的結果不僅與單獨明文相關,而是與壹組明文相關。

DES、3DES

數據加密標準 DES Data Encryption Standard 是由IBM在美國國家安全局NSA授權下研制的壹種使用56位密鑰的分組密碼算法,並於1977年被美國國家標準局NBS公布成為美國商用加密標準。但是因為DES固定的密鑰長度,漸漸不再符合在開放式網絡中的安全要求,已經於1998年被移出商用加密標準,被更安全的AES標準替代。

DES使用的Feistel Network網絡屬於對稱的密碼結構,對信息的加密和解密的過程極為相似或趨同,使得相應的編碼量和線路傳輸的要求也減半。

DES是塊加密算法,將消息分成64位,即16個十六進制數為壹組進行加密,加密後返回相同大小的密碼塊,這樣,從數學上來說,64位0或1組合,就有2^64種可能排列。DES密鑰的長度同樣為64位,但在加密算法中,每逢第8位,相應位會被用於奇偶校驗而被算法丟棄,所以DES的密鑰強度實為56位。

3DES Triple DES,使用不同Key重復三次DES加密,加密強度更高,當然速度也就相應的降低。

AES

高級加密標準 AES Advanced Encryption Standard 為新壹代數據加密標準,速度快,安全級別高。由美國國家標準技術研究所NIST選取Rijndael於2000年成為新壹代的數據加密標準。

AES的區塊長度固定為128位,密鑰長度可以是128位、192位或256位。AES算法基於Substitution Permutation Network代換置列網絡,將明文塊和密鑰塊作為輸入,並通過交錯的若幹輪代換"Substitution"和置換"Permutation"操作產生密文塊。

AES加密過程是在壹個4*4的字節矩陣(或稱為體State)上運作,初始值為壹個明文區塊,其中壹個元素大小就是明文區塊中的壹個Byte,加密時,基本上各輪加密循環均包含這四個步驟:

合並(AddRoundKey):矩陣中的每個字節與該回合密鑰做XOR異或運算,其中回合密鑰由主密鑰通過Rijndael密鑰生成方案生成,這個密鑰大小跟原矩陣壹致。替換(SubBytes):矩陣中的每個字節通過壹個8位查找表對應的特定字節所替換。這裏的8位查找表為S-box(Substitution-box, 置換盒),用來模糊密鑰與密文之間的關系,實現輸入輸出的非線性特征。行混淆(ShiftRows):矩陣中的每壹行的各個字節循環向左方位移,位移量隨行數遞增。列混淆(MixColumns):每壹列的四個字節通過線性變換互相結合,即與壹個固定的多項式做乘法。

安全性

已知的針對AES唯壹的成功攻擊是旁道攻擊,2005年時使用緩存時序攻擊法,破解了壹個裝載OpenSSL AES加密系統的客戶服務器。

針對區塊加密系統最常見的方式,是通過對加密循環次數較少的版本嘗試攻擊,然後改進算法後繼續攻擊高級版本,目前這個破解方法還不太實用。

另外由於AES的數據結構具有井然有序的代數結構,有壹個擔心就是相關的代數攻擊,目前基於此的有效攻擊方法也暫時沒有出現。

非對稱密鑰加密

非對稱密鑰加密 Asymmetric Key Cryptography 也可稱為 Public Key Cryptography 公開密鑰加密:需要兩個密鑰,分為公鑰和私鑰,壹個用作加密而另外壹個只能用於解密,而加密的密鑰並不能用來解密。

根據此特性,除了加解密的應用外,還可以確保數字簽名的功能:某用戶用私鑰加密明文,任何人都可以用該用戶的公鑰解密密文,以此判定身份。

對稱密鑰需要壹個安全的渠道可以交換***用的密鑰,而非對稱密鑰可以將加密公鑰公開發布;不過公鑰加密在計算上相當復雜,性能遠比不上對稱加密,所以壹般會利用公鑰加密來交換對稱密鑰,然後依靠對稱密鑰來傳輸具體的信息。

RSA

RSA是由三個人的名字組成 Ron Rivest、Adi Shamir、Leonard Adleman於1977年在MIT提出,並於1987年公布,是目前最常用的公鑰加密算法。

RSA算法的核心是極大整數的因式分解,理論基礎在於由兩個大質數算出乘積很容易,但是要從壹個極大整數因式分解得出兩個質數卻很難。

ECC

ECC即 Elliptic Curve Cryptography 橢圓曲線密碼學,是基於橢圓曲線數學建立公開密鑰加密的算法。ECC的主要優勢是在提供相當的安全等級情況下,密鑰長度更小。

ECC的原理是根據有限域上的橢圓曲線上的點群中的離散對數問題ECDLP,而ECDLP是比因式分解問題更難的問題,是指數級的難度。而ECDLP定義為:給定素數p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小於p的正整數k。可以證明由k和P計算Q比較容易,而由Q和P計算k則比較困難。

數字簽名

數字簽名 Digital Signature 又稱公鑰數字簽名是壹種用來確保數字消息或文檔真實性的數學方案。壹個有效的數字簽名需要給接收者充足的理由來信任消息的可靠來源,而發送者也無法否認這個簽名,並且這個消息在傳輸過程中確保沒有發生變動。

數字簽名的原理在於利用公鑰加密技術,簽名者將消息用私鑰加密,然後公布公鑰,驗證者就使用這個公鑰將加密信息解密並對比消息。壹般而言,會使用消息的散列值來作為簽名對象。