DES加密演算法是一種分組加密演算法,明文以64位為單位被分割成塊。在64位密鑰的控制下,64位數據首先進行初始變換,然後經過16輪加密迭代。每輪迭代中,64位數據被分割為左右兩半,每半32位。右半部分與密鑰結合,再與左半部分結合,結果作為新的右半部分;結合前的右半部分作為新的左半部分。這一系列步驟構成一輪,共重復16次。最後一輪之後,再進行初始置換的逆置換,最終得到64位的密文。
DES加密過程主要由加密處理、加密變換和子密鑰生成三個部分組成。加密處理首先對64位明文進行初始變換,通過表1所示的初始換位表IP,將輸入位置換到新的位置。接著,經過16輪加密變換,初始換位的64位輸出作為下一次的輸入,將64位分為左、右兩個32位,分別記為L0和R0。從L0、R0到L16、R16,每輪處理後的左右32位分別為Ln和Rn,其中Rn=Ln-1,Ln=Rn-1,kn是第n輪輸入的48位子密鑰。最後,進行16輪加密變換後,L16和R16合並為64位數據,再按照表2所示的最後換位表進行IP-1的換位,得到64位密文。
加密變換過程中,通過重復某些位將32位的右半部分擴展為48位,56位的密鑰先移位並減少至48位,48位的右半部分通過異或操作與48位的密鑰結合,分成6位的8個分組,通過8個S-盒將這48位替代成新的32位數據,再進行置換。S-盒輸入6位,輸出4位,通過輸入的6位的開頭和末尾兩位選定行,然後按選定的替代表將中間4位進行替代,輸出32位,再按照表4單純換位表P進行變換,完成f(R,K)的變換。
子密鑰生成過程從64位密鑰開始,通過壓縮換位PC-1去掉每個位元組的第8位,密鑰去掉第8、16、24、……64位減至56位,實際密鑰長度為56位。每輪生成48位子密鑰,輸入的64位密鑰先通過壓縮換位得到56位密鑰,每層分成兩部分,上部分28位為C0,下部分為D0。C0和D0依次進行循環左移操作生成C1和D1,將C1和D1合成56位,再通過壓縮換位PC-2輸出48位子密鑰K1。循環左移次數如表7所示,以此類推,得到16個子密鑰。密鑰壓縮換位表如表6所示。
2. DES加密過程和解密過程的區別
數據加密標准DES(Data Encryption Standard)演算法是一個分組加密演算法,也是一個對稱演算法,加密和解密使用同一個演算法,利用傳統的換位、異或、置換等加密方法。DES是IBM在上個世紀70年代開發的簡密鑰對稱加解密演算法。
加密過程和解密過程的區別:「方向和過程剛好相反」。也就是說「解密過程是加密過程的反過程」,DES演算法解密過程是加密過程的「逆」運算。
以Triple DES為例說明
加密過程:
1、以K1加密
2、以K2解密
3、以K3加密
解密過程(密鑰順序及應用方向與加密過程相反):
1、以K3解密
2、以K2加密
3、以K1解密
說明:K1、K2、K3是密鑰。
3. DES演算法的核心是什麼
S盒是DES演算法的核心,用在分組密碼演算法中,是唯一的非線性結構,其S盒的指標的好壞直接決定了密碼演算法的好壞。
每個S盒是將6位輸入轉化為4位輸出。
根據6位輸入來查找對應S盒的表,由第一和最後一位得到行號,由中間的四位得到列號。如:對S盒1,輸入為110011,就是查找第3行、第9列,結果為11,於是輸出就是二進制的1011。
(3)des演算法例子擴展閱讀
DES於1976年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),隨後在國際上廣泛流傳開來。
目前DES現在已經不是一種安全的加密方法,主要因為它使用的56位密鑰過短。1999年1月,distributed.net與電子前哨基金會合作,在22小時15分鍾內即公開破解了一個DES密鑰。在2001年,DES作為一個標准已經被高級加密標准(AES)所取代。
DES是一種分組密碼,它使用使用56位秘鑰對64位(8位元組)分組進行加密。同時是一種對稱密碼,即其加密和解密使用相同的秘鑰。每個分組的加密分為16輪迭代,每輪是用不同的自秘鑰,而子秘鑰是根據主密鑰k編排得出。
4. des加密演算法
des加密演算法如下:
一、DES加密演算法簡介
DES(Data Encryption Standard)是目前最為流行的加密演算法之一。DES是對稱的,也就是說它使用同一個密鑰來加密和解密數據。
DES還是一種分組加密演算法,該演算法每次處理固定長度的數據段,稱之為分組。DES分組的大小是64位,如果加密的數據長度不是64位的倍數,可以按照某種具體的規則來填充位。
從本質上來說,DES的安全性依賴於虛假表象,從密碼學的術語來講就是依賴於「混亂和擴散」的原則。混亂的目的是為隱藏任何明文同密文、或者密鑰之間的關系,而擴散的目的是使明文中的有效位和密鑰一起組成盡可能多的密文。兩者結合到一起就使得安全性變得相對較高。
DES演算法具體通過對明文進行一系列的排列和替換操作來將其加密。過程的關鍵就是從給定的初始密鑰中得到16個子密鑰的函數。要加密一組明文,每個子密鑰按照順序(1-16)以一系列的位操作施加於數據上,每個子密鑰一次,一共重復16次。每一次迭代稱之為一輪。要對密文進行解密可以採用同樣的步驟,只是子密鑰是按照逆向的順序(16-1)對密文進行處理。