介紹
對稱加密算法是應(yīng)用較早的加密算法,技術(shù)成熟。在對稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復(fù)成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密,這就要求解密方事先必須知道加密密鑰。目前常用的加解密算法有:DES、3DES、AES、Blowfish、IDEA、RC5、RC6。
幾種常用算法介紹
對稱加密算法用來對敏感數(shù)據(jù)等信息進行加密,常用的算法包括:
DES(Data Encryption Standard):數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。
3DES(Triple DES):是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高;
1、DES算法
數(shù)據(jù)加密標準DES(Data Encryption Standard)是一種分組加密算法,以64位為分組,基于56位密鑰來對數(shù)據(jù)進行加密。
算法描述:
DES是一種典型的塊密碼—一種將固定長度的平文通過一系列復(fù)雜的操作變成同樣長度的密文的算法。對DES而言,塊長度為64位。同時,DES使用密鑰來自定義變換過程,因此算法認為只有持有加密所用的密鑰的用戶才能解密密文。密鑰表面上是64位的,然而只有其中的56位被實際用于算法,其余8位可以被用于奇偶校驗,并在算法中被丟棄。因此,DES的有效密鑰長度為56位,通常稱DES的密鑰長度為56位。來源:數(shù)據(jù)加密標準
算法原理:
DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位,其算法主要分為兩步:
- 初始置換
其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸出的左32位,R0是右32位,例:設(shè)置換前的輸入值為D1D2D3……D64,則經(jīng)過初始置換后的結(jié)果為:L0=D58D50……D8;R0=D57D49……D7。 - 逆置換
經(jīng)過16次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。
以上為DES算法流程圖,詳細的DES加密過程參考:des算法和 DES加密解密算法詳解。
2、3DES算法
3DES(或稱為Triple DES)是三重數(shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當于是對每個數(shù)據(jù)塊應(yīng)用三次DES加密算法。由于計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設(shè)計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設(shè)計一種全新的塊密碼算法。來源三重數(shù)據(jù)加密算法
算法原理
使用3條56位的密鑰對 數(shù)據(jù)進行三次加密。3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的加密標準)。
其具體實現(xiàn)如下:設(shè)Ek()和Dk()代表DES算法的加密和解密過程,K代表DES算法使用的密鑰,P代表明文,C代表密文,這樣:
3DES加密過程為:C=Ek3(Dk2(Ek1(P)))
3DES解密過程為:P=Dk1(EK2(Dk3(C)))
3、AES算法
2000年10月,NIST(美國國家標準和技術(shù)協(xié)會)宣布通過從15種侯選算法中選出的一項新的密匙加密標準。Rijndael被選中成為將來的AES。 Rijndael是在 1999 年下半年,由研究員 Joan Daemen 和 Vincent Rijmen 創(chuàng)建的。AES 正日益成為加密各種形式的電子數(shù)據(jù)的實際標準。
美國標準與技術(shù)研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高級加密標準 (AES) 規(guī)范。
算法原理
AES 算法基于排列和置換運算。AES加密過程涉及到4種操作:字節(jié)替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)。從上圖可以看出:
1)解密過程的每一步分別對應(yīng)操作的逆操作
2)加解密所有操作的順序正好是相反的。正是由于這兩點保證了解密能夠正確地恢復(fù)明文。加解密中每輪的密鑰分別由初始密鑰擴展得到。算法中16字節(jié)的明文、密文和輪密鑰都以一個4x4的矩陣表示。
AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,并且用 128 位(16字節(jié))分組加密和解密數(shù)據(jù)。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù)。通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換和替換輸入數(shù)據(jù)。算法詳細過程參考:密碼算法詳解——AES及高級加密標準
AES與3DES的比較
**算法名稱****** | **算法類型****** | **密鑰長度****** | **速度****** | **解密時間(建設(shè)機器每秒嘗試****255****個密鑰)****** | **資源消耗****** |
---|---|---|---|---|---|
AES | 對稱block密碼 | 128、192、256位 | 高 | 1490000億年 | 低 |
3DES | 對稱feistel密碼 | 112位或168位 | 低 | 46億年 | 中 |