網路安全通信中要用到兩類密碼演算法,一類是對稱密碼演算法,另一類是非對稱密碼演算法。對稱密碼演算法有時又叫傳統密碼演算法、秘密密鑰演算法或單密鑰演算法,非對稱密碼演算法也叫公開密鑰密碼演算法或雙密鑰演算法。對稱密碼演算法的加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數對稱演算法中,加密解密密鑰是相同的。它要求發送者和接收者在安全通信之前,商定一個密鑰。對稱演算法的安全性依賴於密鑰,泄漏密鑰就意味著任何人都能對消息進行加密解密。只要通信需要保密,密鑰就必須保密。
對稱演算法又可分為兩類。一次只對明文中的單個位(有時對位元組)運算的演算法稱為序列演算法或序列密碼。另一類演算法是對明文的一組位進行運算,這些位組稱為分組,相應的演算法稱為分組演算法或分組密碼。現代計算機密碼演算法的典型分組長度為64位――這個長度既考慮到分析破譯密碼的難度,又考慮到使用的方便性。後來,隨著破譯能力的發展,分組長度又提高到128位或更長。
常用的採用對稱密碼術的加密方案有5個組成部分(如圖所示)
1)明文:原始信息。
2)加密演算法:以密鑰為參數,對明文進行多種置換和轉換的規則和步驟,變換結果為密文。
3)密鑰:加密與解密演算法的參數,直接影響對明文進行變換的結果。
4)密文:對明文進行變換的結果。
5)解密演算法:加密演算法的逆變換,以密文為輸入、密鑰為參數,變換結果為明文。
對稱密碼當中有幾種常用到的數學運算。這些運算的共同目的就是把被加密的明文數碼盡可能深地打亂,從而加大破譯的難度。
◆移位和循環移位
移位就是將一段數碼按照規定的位數整體性地左移或右移。循環右移就是當右移時,把數碼的最後的位移到數碼的最前頭,循環左移正相反。例如,對十進制數碼12345678循環右移1位(十進制位)的結果為81234567,而循環左移1位的結果則為23456781。
◆置換
就是將數碼中的某一位的值根據置換表的規定,用另一位代替。它不像移位操作那樣整齊有序,看上去雜亂無章。這正是加密所需,被經常應用。
◆擴展
就是將一段數碼擴展成比原來位數更長的數碼。擴展方法有多種,例如,可以用置換的方法,以擴展置換表來規定擴展後的數碼每一位的替代值。
◆壓縮
就是將一段數碼壓縮成比原來位數更短的數碼。壓縮方法有多種,例如,也可以用置換的方法,以表來規定壓縮後的數碼每一位的替代值。
◆異或
這是一種二進制布爾代數運算。異或的數學符號為⊕ ,它的運演算法則如下:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
也可以簡單地理解為,參與異或運算的兩數位如相等,則結果為0,不等則為1。
◆迭代
迭代就是多次重復相同的運算,這在密碼演算法中經常使用,以使得形成的密文更加難以破解。
下面我們將介紹一種流行的對稱密碼演算法DES。
DES是Data Encryption Standard(數據加密標准)的縮寫。它是由IBM公司研製的一種對稱密碼演算法,美國國家標准局於1977年公布把它作為非機要部門使用的數據加密標准,三十年來,它一直活躍在國際保密通信的舞台上,扮演了十分重要的角色。
DES是一個分組加密演算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個演算法。它的密鑰長度是56位(因為每個第8 位都用作奇偶校驗),密鑰可以是任意的56位的數,而且可以任意時候改變。其中有極少數被認為是易破解的弱密鑰,但是很容易避開它們不用。所以保密性依賴於密鑰。
DES加密的演算法框架如下:
首先要生成一套加密密鑰,從用戶處取得一個64位長的密碼口令,然後通過等分、移位、選取和迭代形成一套16個加密密鑰,分別供每一輪運算中使用。
DES對64位(bit)的明文分組M進行操作,M經過一個初始置換IP,置換成m0。將m0明文分成左半部分和右半部分m0 = (L0,R0),各32位長。然後進行16輪完全相同的運算(迭代),這些運算被稱為函數f,在每一輪運算過程中數據與相應的密鑰結合。
在每一輪中,密鑰位移位,然後再從密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作替代成新的48位數據,再將其壓縮置換成32位。這四步運算構成了函數f。然後,通過另一個異或運算,函數f的輸出與左半部分結合,其結果成為新的右半部分,原來的右半部分成為新的左半部分。將該操作重復16次。
經過16輪迭代後,左,右半部分合在一起經過一個末置換(數據整理),這樣就完成了加密過程。
加密流程如圖所示。
DES解密過程:
在了解了加密過程中所有的代替、置換、異或和循環迭代之後,讀者也許會認為,解密演算法應該是加密的逆運算,與加密演算法完全不同。恰恰相反,經過密碼學家精心設計選擇的各種操作,DES獲得了一個非常有用的性質:加密和解密使用相同的演算法!
DES加密和解密唯一的不同是密鑰的次序相反。如果各輪加密密鑰分別是K1,K2,K3…K16,那麼解密密鑰就是K16,K15,K14…K1。這也就是DES被稱為對稱演算法的理由吧。
至於對稱密碼為什麼能對稱? DES具體是如何操作的?本文附錄中將做進一步介紹,有興趣的讀者不妨去讀一讀探個究竟
4.DES演算法的安全性和發展
DES的安全性首先取決於密鑰的長度。密鑰越長,破譯者利用窮舉法搜索密鑰的難度就越大。目前,根據當今計算機的處理速度和能力,56位長度的密鑰已經能夠被破解,而128位的密鑰則被認為是安全的,但隨著時間的推移,這個數字也遲早會被突破。
另外,對DES演算法進行某種變型和改進也是提高DES演算法安全性的途徑。
例如後來演變出的3-DES演算法使用了3個獨立密鑰進行三重DES加密,這就比DES大大提高了安全性。如果56位DES用窮舉搜索來破譯需要2∧56次運算,而3-DES 則需要2∧112次。
又如,獨立子密鑰DES由於每輪都使用不同的子密鑰,這意味著其密鑰長度在56位的基礎上擴大到768位。DES還有DESX、CRYPT、GDES、RDES等變型。這些變型和改進的目的都是為了加大破譯難度以及提高密碼運算的效率
㈡ 對稱加密演算法之DES介紹
DES (Data Encryption Standard)是分組對稱密碼演算法。
DES演算法利用 多次組合替代演算法 和 換位演算法 ,分散和錯亂的相互作用,把明文編製成密碼強度很高的密文,它的加密和解密用的是同一演算法。
DES演算法,是一種 乘積密碼 ,其在演算法結構上主要採用了 置換 、 代替 、 模二相加 等函數,通過 輪函數 迭代的方式來進行計算和工作。
DES演算法也會使用到數據置換技術,主要有初始置換 IP 和逆初始置換 IP^-1 兩種類型。DES演算法使用置換運算的目的是將原始明文的所有格式及所有數據全部打亂重排。而在輪加密函數中,即將數據全部打亂重排,同時在數據格式方面,將原有的32位數據格式,擴展成為48位數據格式,目的是為了滿足S盒組對數據長度和數據格式規范的要求。
一組數據信息經過一系列的非線性變換以後,很難從中推導出其計算的過程和使用的非線性組合;但是如果這組數據信息使用的是線性變換,計算就容易的多。在DES演算法中,屬於非線性變換的計算過程只有S盒,其餘的數據計算和變換都是屬於線性變換,所以DES演算法安全的關鍵在於S盒的安全強度。此外,S盒和置換IP相互配合,形成了很強的抗差分攻擊和抗線性攻擊能力,其中抗差分攻擊能力更強一些。
DES演算法是一種分組加密機制,將明文分成N個組,然後對各個組進行加密,形成各自的密文,最後把所有的分組密文進行合並,形成最終的密文。
DES加密是對每個分組進行加密,所以輸入的參數為分組明文和密鑰,明文分組需要置換和迭代,密鑰也需要置換和循環移位。在初始置換IP中,根據一張8*8的置換表,將64位的明文打亂、打雜,從而提高加密的強度;再經過16次的迭代運算,在這些迭代運算中,要運用到子密鑰;每組形成的初始密文,再次經過初始逆置換 IP^-1 ,它是初始置換的逆運算,最後得到分組的最終密文。
圖2右半部分,給出了作用56比特密鑰的過程。DES演算法的加密密鑰是64比特,但是由於密鑰的第n*8(n=1,2…8)是校驗(保證含有奇數個1),因此實際參與加密的的密鑰只有 56比特 。開始時,密鑰經過一個置換,然後經過循環左移和另一個置換分別得到子密鑰ki,供每一輪的迭代加密使用。每輪的置換函數都一樣,但是由於密鑰位的重復迭代使得子密鑰互不相同。
DES演算法 利用多次組合替代演算法和換位演算法,分散和錯亂的相互作用,把明文編製成密碼強度很高的密文,它的加密和解密用的是同一演算法。
DES演算法詳述:DES對64位明文分組(密鑰56bit)進行操作。
1、 初始置換函數IP:64位明文分組x經過一個初始置換函數IP,產生64位的輸出x0,再將分組x0分成左半部分L0和右半部分R0:即將輸入的第58位換到第一位,第50位換到第2位,…,依次類推,最後一位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0是右32位。例,設置換前的輸入值為D1D2D3…D64,則經過初始置換後的結果為:L0=D58D50…D8;R0=D57D49…D7.其置換規則如表1所示。
DES加密過程最後的逆置換 IP^-1 ,是表1的 逆過程 。就是把原來的每一位都恢復過去,即把第1位的數據,放回到第58位,把第2位的數據,放回到第50位。
2、 獲取子密鑰 Ki :DES加密演算法的密鑰長度為56位,一般表示為64位(每個第8位用於奇偶校驗),將用戶提供的64位初始密鑰經過一系列的處理得到K1,K2,…,K16,分別作為 1~16 輪運算的 16個子密鑰 。
(1). 將64位密鑰去掉8個校驗位,用密鑰置換 PC-1 (表2)置換剩下的56位密鑰;
(2). 將56位分成前28位C0和後28位D0,即 PC-1(K56)=C0D0 ;
(3). 根據輪數,這兩部分分別循環左移1位或2位,表3:
(4). 移動後,將兩部分合並成56位後通過壓縮置換PC-2(表4)後得到48位子密鑰,即Ki=PC-2(CiDi).
子密鑰產生如圖2所示:
3、 密碼函數F(非線性的)
(1). 函數F的操作步驟:密碼函數F 的輸入是32比特數據和48比特的子密鑰:
A.擴展置換(E):將數據的右半部分Ri從32位擴展為48位。位選擇函數(也稱E盒),如表5所示:
B.異或:擴展後的48位輸出E(Ri)與壓縮後的48位密鑰Ki作異或運算;
C.S盒替代:將異或得到的48位結果分成八個6位的塊,每一塊通過對應的一個S盒產生一個4位的輸出。
(2)、D、P盒置換:將八個S盒的輸出連在一起生成一個32位的輸出,輸出結果再通過置換P產生一個32位的輸出即:F(Ri,Ki),F(Ri,Ki)演算法描述如圖3,最後,將P盒置換的結果與最初的64位分組的左半部分異或,然後,左、右半部分交換,開始下一輪計算。
4、密文輸出:經過16次迭代運算後,得到L16、R16,將此作為輸入,進行逆置換,即得到密文輸出。逆置換正好是初始置的逆運算。例如,第1位經過初始置換後,處於第40位,而通過逆置換,又將第40位換回到第1位,其逆置換規則如表8所示:
圖4為DES演算法加密原理圖:
DES演算法加密和解密過程採用相同的演算法,並採用相同的加密密鑰和解密密鑰,兩者的區別是:(1)、DES加密是從L0、R0到L15、R15進行變換,而解密時是從L15、R15到L0、R0進行變換的;(2)、加密時各輪的加密密鑰為K0K1…K15,而解密時各輪的解密密鑰為K15K14…K0;(3)、加密時密鑰循環左移,解密時密鑰循環右移。
DES加密過程分析:
(1)、首先要生成64位密鑰,這64位的密鑰經過「子密鑰演算法」換轉後,將得到總共16個子密鑰。將這些子密鑰標識為Kn(n=1,2,…,16)。這些子密鑰主要用於總共十六次的加密迭代過程中的加密工具。
(2)、其次要將明文信息按64位數據格式為一組,對所有明文信息進行分組處理。每一段的64位明文都要經過初試置換IP,置換的目的是將數據信息全部打亂重排。然後將打亂的數據分為左右兩塊,左邊一塊共32位為一組,標識為L0;右邊一塊也是32位為一組,標識為R0.
(3)、置換後的數據塊總共要進行總共十六次的加密迭代過程。加密迭代主要由加密函數f來實現。首先使用子密鑰K1對右邊32位的R0進行加密處理,得到的結果也是32位的;然後再將這個32位的結果數據與左邊32位的L0進行模2處理,從而再次得到一個32位的數據組。我們將最終得到的這個32位組數據,作為第二次加密迭代的L1,往後的每一次迭代過程都與上述過程相同。
(4)、在結束了最後一輪加密迭代之後,會產生一個64位的數據信息組,然後我們將這個64位數據信息組按原有的數據排列順序平均分為左右兩等分,然後將左右兩等分的部分進行位置調換,即原來左等分的數據整體位移至右側,而原來右等分的數據則整體位移至左側,這樣經過合並後的數據將再次經過逆初始置換IP^-1的計算,我們最終將得到一組64位的密文。
DES解密過程分析:DES的解密過程與它的加密過程是一樣的,這是由於DES演算法本身屬於對稱密碼體制演算法,其加密和解密的過程可以共用同一個過程和運算。
DES加密函數f:在DES演算法中,要將64位的明文順利加密輸出成64位的密文,而完成這項任務的核心部分就是加密函數f。加密函數f的主要作用是在第m次的加密迭代中使用子密鑰Km對Km-1進行加密操作。加密函數f在加密過程中總共需要運行16輪。
十六輪迭代演算法:它先將經過置換後的明文分成兩組,每組32位;同時密鑰也被分成了兩組,每組28位,兩組密鑰經過運算,再聯合成一個48位的密鑰,參與到明文加密的運算當中。S盒子,它由8個4*16的矩陣構成,每一行放著0到15的數據,順序各個不同,是由IBM公司設計好的。經過異或運算的明文,是一個48位的數據,在送入到S盒子的時候,被分成了8份,每份6位,每一份經過一個S盒子,經過運算後輸出為4位,即是一個0到15的數字的二進製表示形式。具體運算過程為,將輸入的6位中的第1位為第6位合並成一個二進制數,表示行號,其餘4位也合並成一個二進制數,表示列號。在當前S盒子中,以這個行號和列號為准,取出相應的數,並以二進制的形式表示,輸出,即得到4位的輸出,8個S盒子共計32位。
DES演算法優缺點:
(1)、產生密鑰簡單,但密鑰必須高度保密,因而難以做到一次一密;
(2)、DES的安全性依賴於密鑰的保密。攻擊破解DES演算法的一個主要方法是通過密鑰搜索,使用運算速度非常高的計算機通過排列組合枚舉的方式不斷嘗試各種可能的密鑰,直到破解為止。一般,DES演算法使用56位長的密鑰,通過簡單計算可知所有可能的密鑰數量最多是2^56個。隨著巨型計算機運算速度的不斷提高,DES演算法的安全性也將隨之下降,然而在一般的民用商業場合,DES的安全性仍是足夠可信賴的。
(3)、DES演算法加密解密速度比較快,密鑰比較短,加密效率很高但通信雙方都要保持密鑰的秘密性,為了安全還需要經常更換DES密鑰。
參考鏈接 : https://blog.csdn.net/fengbingchun/article/details/42273257
㈢ DES演算法實現
完成一個DES 演算法的 詳細設計 ,內容包括:
DES(Data Encryption Standard)是一種用於電子數據加密的對稱密鑰塊加密演算法 .它以64位為分組長度,64位一組的明文作為演算法的輸入,通過一系列復雜的操作,輸出同樣64位長度的密文。DES 同樣採用64位密鑰,但由於每8位中的最後1位用於奇偶校驗,實際有效密鑰長度為56位。密鑰可以是任意的56位的數,且可隨時改變。
DES 使用加密密鑰定義變換過程,因此演算法認為只有持有加密所用的密鑰的用戶才能解密密文。DES的兩個重要的安全特性是混淆和擴散。其中 混淆 是指通過密碼演算法使明文和密文以及密鑰的關系非常復雜,無法從數學上描述或者統計。 擴散 是指明文和密鑰中的每一位信息的變動,都會影響到密文中許多位信息的變動,從而隱藏統計上的特性,增加密碼的安全。
DES演算法的基本過程是換位和置換。如圖,有16個相同的處理階段,稱為輪。還有一個初始和最終的排列,稱為 IP 和 FP,它們是反向的 (IP 取消 FP 的作用,反之亦然)。
在主輪之前,塊被分成兩個32位的一半和交替處理;這種縱橫交錯的方案被稱為Feistel 方法。Feistel 結構確保了解密和加密是非常相似的過程——唯一的區別是在解密時子鍵的應用順序是相反的。其餘的演算法是相同的。這大大簡化了實現,特別是在硬體中,因為不需要單獨的加密和解密演算法。
符號表示異或(XOR)操作。Feistel 函數將半塊和一些鍵合在一起。然後,將Feistel 函數的輸出與塊的另一半組合在一起,在下一輪之前交換這一半。在最後一輪之後,兩隊交換了位置;這是 Feistel 結構的一個特性,使加密和解密過程類似。
IP 置換表指定64位塊上的輸入排列。其含義如下:輸出的第一個比特來自輸入的第58位;第二個位來自第50位,以此類推,最後一個位來自第7位輸入。
最後的排列是初始排列的倒數。
展開函數被解釋為初始排列和最終排列。注意,輸入的一些位在輸出時是重復的;輸入的第5位在輸出的第6位和第8位中都是重復的。因此,32位半塊被擴展到48位。
P排列打亂了32位半塊的位元。
表的「左」和「右」部分顯示了來自輸入鍵的哪些位構成了鍵調度狀態的左和右部分。輸入的64位中只有56位被選中;剩下的8(8、16、24、32、40、48、56、64)被指定作為奇偶校驗位使用。
這個排列從56位鍵調度狀態為每輪選擇48位的子鍵。
這個表列出了DES中使用的8個S-box,每個S-box用4位的輸出替換6位的輸入。給定一個6位輸入,通過使用外部的兩個位選擇行,以及使用內部的四個位選擇列,就可以找到4位輸出。例如,一個輸入「011011」有外部位「01」和內部位「1101」。第一行為「00」,第一列為「0000」,S-box S5對應的輸出為「1001」(=9),即第二行第14列的值。
DES演算法的基本流程圖如下:
DES演算法是典型的對稱加密演算法,在輸入64比特明文數據後,通過輸入64比特密鑰和演算法的一系列加密步驟後,可以得到同樣為64比特的密文數據。反之,我們通過已知的密鑰,可以將密文數據轉換回明文。 我們將演算法分為了三大塊:IP置換、16次T迭代和IP逆置換 ,加密和解密過程分別如下:
實驗的設計模式是自頂向下的結構,用C語言去分別是先各個函數的功能,最後通過主函數將所有函數進行整合,讓演算法更加清晰客觀。
通過IP置換表,根據表中所示下標,找到相應位置進行置換。
對於16次 迭代,我們先將傳入的經過 IP 混淆過的64位明文的左右兩部分,分別為32位的 和32位的 。之後我們將 和 進行交換,得到作為IP逆置換的輸入:
,
子密鑰的生成,經歷下面一系列步驟:首先對於64位密鑰,進行置換選擇,因為將用戶輸入的64 位經歷壓縮變成了56位,所以我們將左面和右面的各28位進行循環位移。左右兩部分分別按下列規則做循環移位:當 ,循環左移1位;其餘情況循環左移2位。最後將得到的新的左右兩部分進行連接得到56位密鑰。
對半塊的 Feistel 操作分為以下五步:
如上二圖表明,在給出正確的密碼後,可以得到對應的明文。
若密碼錯誤,將解碼出錯誤答案。
【1】 Data Encryption Standard
【2】 DES演算法的詳細設計(簡單實現)
【3】 深入理解並實現DES演算法
【4】 DES演算法原理完整版
【5】 安全體系(一)—— DES演算法詳解
㈣ des加密演算法
des加密演算法如下:
一、DES加密演算法簡介
DES(Data Encryption Standard)是目前最為流行的加密演算法之一。DES是對稱的,也就是說它使用同一個密鑰來加密和解密數據。
DES還是一種分組加密演算法,該演算法每次處理固定長度的數據段,稱之為分組。DES分組的大小是64位,如果加密的數據長度不是64位的倍數,可以按照某種具體的規則來填充位。
從本質上來說,DES的安全性依賴於虛假表象,從密碼學的術語來講就是依賴於「混亂和擴散」的原則。混亂的目的是為隱藏任何明文同密文、或者密鑰之間的關系,而擴散的目的是使明文中的有效位和密鑰一起組成盡可能多的密文。兩者結合到一起就使得安全性變得相對較高。
DES演算法具體通過對明文進行一系列的排列和替換操作來將其加密。過程的關鍵就是從給定的初始密鑰中得到16個子密鑰的函數。要加密一組明文,每個子密鑰按照順序(1-16)以一系列的位操作施加於數據上,每個子密鑰一次,一共重復16次。每一次迭代稱之為一輪。要對密文進行解密可以採用同樣的步驟,只是子密鑰是按照逆向的順序(16-1)對密文進行處理。
㈤ des演算法是什麼
DES演算法為密碼體制中的對稱密碼體制。
DES演算法為密碼體制中的對稱密碼體制,又被稱為美國數據加密標准,是1972年美國IBM公司研製的對稱密碼體制加密演算法。明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算,分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。
des的應用領域
計算機網路通信:對計算機網路通信中的數據提供保護是DES的一項重要應用。但這些被保護的數據一般只限於民用敏感信息,即不在政府確定的保密范圍之內的信息。
電子資金傳送系統:採用DES的方法加密電子資金傳送系統中的信息,可准確、快速地傳送數據,並可較好地解決信息安全的問題。
保護用戶文件:用戶可自選密鑰對重要文件加密,防止未授權用戶竊密。
用戶識別:DES還可用於計算機用戶識別系統中。
㈥ des演算法與rsa演算法區別
DES演算法與RSA演算法區別:
1、DES演算法:
優點:密鑰短,加密處理簡單,加密解密速度快,適用於加密大量數據的場合。
缺點:單鍵,不能從一個鍵推導出另一個鍵。
2、RSA演算法:
優點:應用廣泛,加密密鑰與解密密鑰不一樣,一般的加密密鑰稱為私鑰。解密密鑰稱為公鑰,私鑰加密後只能用公鑰解密,當然也可以用公鑰加密,用私鑰解密。
缺點:密鑰大小大,加密解密速度慢,一般用於加密少量數據,如DES密鑰。
(6)sdes演算法擴展閱讀:
一、安全性:
RSA的安全性依賴於大數分解,但它是否等同於大數分解還沒有從理論上得到證明,因為沒有證據證明破解RSA一定是大數分解。
如果有一種演算法不需要分解大數,則必須將其修改為分解大數的演算法。RSA演算法的一些變體已被證明等價於大數分解。
不管怎樣,分解n是最明顯的攻擊方式。把大素數分解到多個小數點後是可能的。因此,模n必須更大,這取決於具體的應用。
二、演算法定義:
1、DES演算法定義:是對稱演算法,加密密鑰和解密密鑰是相同的。
2、RSA演算法定義:非對稱演算法,加密密鑰與解密密鑰是不同的,一般的加密密鑰稱為私鑰,解密密鑰稱為公鑰,私鑰加密只能用於解密,當然也可以用於加密,解密用私鑰。
㈦ DES加密演算法中S作用S盒的輸入幾位輸出幾位說明其計算機過程
S盒是DES演算法的核心,用在分組密碼演算法中,是唯一的非線性結構,其S盒的指標的好壞直接決定了密碼演算法的好壞。
每個S盒是將6位輸入轉化為4位輸出。
根據6位輸入來查找對應S盒的表,由第一和最後一位得到行號,由中間的四位得到列號。如:對S盒1,輸入為110011,就是查找第3行、第9列,結果為11,於是輸出就是二進制的1011。
(7)sdes演算法擴展閱讀
DES於1976年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),隨後在國際上廣泛流傳開來。
目前DES現在已經不是一種安全的加密方法,主要因為它使用的56位密鑰過短。1999年1月,distributed.net與電子前哨基金會合作,在22小時15分鍾內即公開破解了一個DES密鑰。在2001年,DES作為一個標准已經被高級加密標准(AES)所取代。
DES是一種分組密碼,它使用使用56位秘鑰對64位(8位元組)分組進行加密。同時是一種對稱密碼,即其加密和解密使用相同的秘鑰。每個分組的加密分為16輪迭代,每輪是用不同的自秘鑰,而子秘鑰是根據主密鑰k編排得出。
㈧ 求教des演算法的詳細過程
des演算法的詳細過程:
1-1、變換密鑰
取得64位的密鑰,每個第8位作為奇偶校驗位。
1-2、變換密鑰。
1-2-1、舍棄64位密鑰中的奇偶校驗位,根據下表(PC-1)進行密鑰變換得到56位的密鑰,在變換中,奇偶校驗位以被舍棄。
Permuted Choice 1 (PC-1)
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
1-2-2、將變換後的密鑰分為兩個部分,開始的28位稱為C[0],最後的28位稱為D[0]。
1-2-3、生成16個子密鑰,初始I=1。
1-2-3-1、同時將C[I]、D[I]左移1位或2位,根據I值決定左移的位數。見下表
I: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
左移位數: 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
1-2-3-2、將C[I]D[I]作為一個整體按下表(PC-2)變換,得到48位的K[I]
Permuted Choice 2 (PC-2)
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
1-2-3-3、從1-2-3-1處循環執行,直到K[16]被計算完成。
2、處理64位的數據
2-1、取得64位的數據,如果數據長度不足64位,應該將其擴展為64位(例如補零)
2-2、將64位數據按下表變換(IP)
Initial Permutation (IP)
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
2-3、將變換後的數據分為兩部分,開始的32位稱為L[0],最後的32位稱為R[0]。
2-4、用16個子密鑰加密數據,初始I=1。
2-4-1、將32位的R[I-1]按下表(E)擴展為48位的E[I-1]
Expansion (E)
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
2-4-2、異或E[I-1]和K[I],即E[I-1] XOR K[I]
2-4-3、將異或後的結果分為8個6位長的部分,第1位到第6位稱為B[1],第7位到第12位稱為B[2],依此類推,第43位到第48位稱為B[8]。
2-4-4、按S表變換所有的B[J],初始J=1。所有在S表的值都被當作4位長度處理。
2-4-4-1、將B[J]的第1位和第6位組合為一個2位長度的變數M,M作為在S[J]中的行號。
2-4-4-2、將B[J]的第2位到第5位組合,作為一個4位長度的變數N,N作為在S[J]中的列號。
2-4-4-3、用S[J][M][N]來取代B[J]。
Substitution Box 1 (S[1])
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S[2]
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S[3]
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S[4]
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S[5]
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S[6]
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S[7]
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S[8]
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
2-4-4-4、從2-4-4-1處循環執行,直到B[8]被替代完成。
2-4-4-5、將B[1]到B[8]組合,按下表(P)變換,得到P。
Permutation P
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
2-4-6、異或P和L[I-1]結果放在R[I],即R[I]=P XOR L[I-1]。
2-4-7、L[I]=R[I-1]
2-4-8、從2-4-1處開始循環執行,直到K[16]被變換完成。
2-4-5、組合變換後的R[16]L[16](注意:R作為開始的32位),按下表(IP-1)變換得到最後的結果。
Final Permutation (IP**-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
以上就是DES演算法的描述。
㈨ 「DES」和「AES」演算法的比較,各自優缺點有哪些
DES演算法優點:DES演算法具有極高安全性,到目前為止,除了用窮舉搜索法對DES演算法進行攻擊外,還沒有發現更有效的辦法。
DES演算法缺點:
1、分組比較短。
2、密鑰太短。
3、密碼生命周期短。
4、運算速度較慢。
AES演算法優點:
1、運算速度快。
2、對內存的需求非常低,適合於受限環境。
3、分組長度和密鑰長度設計靈活。
4、 AES標准支持可變分組長度,分組長度可設定為32比特的任意倍數,最小值為128比特,最大值為256比特。
5、 AES的密鑰長度比DES大,它也可設定為32比特的任意倍數,最小值為128比特,最大值為256比特,所以用窮舉法是不可能破解的。
6、很好的抵抗差分密碼分析及線性密碼分析的能力。
AES演算法缺點:目前尚未存在對AES 演算法完整版的成功攻擊,但已經提出對其簡化演算法的攻擊。
(9)sdes演算法擴展閱讀:
高級加密標准(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。
這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標准由美國國家標准與技術研究院(NIST)於2001年11月26日發布於FIPS PUB 197,並在2002年5月26日成為有效的標准。2006年,高級加密標准已然成為對稱密鑰加密中最流行的演算法之一。
㈩ 求DES加密演算法詳解拜託了各位 謝謝
DES加密演算法是分組加密演算法,明文以64位為單位分成塊。64位數據在64位密鑰的控制下,經過初始變換後,進行16輪加密迭代:64位數據被分成左右兩半部分,每部分32位,密鑰與右半部分相結合,然後再與左半部分相結合,結果作為新的右半部分;結合前的右半部分作為新的左半部分。這一系列步驟組成一輪。這種輪換要重復16次。最後一輪之後,再進行初始置換的逆置換,就得到了64位的密文。 DES的加密過程可分為加密處理,加密變換和子密鑰生成幾個部分組成。 1.加密處理過程 (1)初始變換。加密處理首先要對64位的明文按表1所示的初始換位表IP進行變換。表中的數值表示輸入位被置換後的新位置。例如輸入的第58位,在輸出的時候被置換到第1位;輸入的是第7位,在輸出時被置換到第64位。 (2)加密處理。上述換位處理的輸出,中間要經過16輪加密變換。初始換位的64位的輸出作為下一次的輸入,將64位分為左、右兩個32位,分別記為L0和R0,從L0、R0到L16、R16,共進行16輪加密變換。其中,經過n輪處理後的點左右32位分別為Ln和Rn,則可做如下定義: Ln=Rn-1 Rn=Ln-1 其中,kn是向第n輪輸入的48位的子密鑰,Ln-1和Rn-1分別是第n-1輪的輸出,f是Mangler函數。 (3)最後換位。進行16輪的加密變換之後,將L16和R16合成64位的數據,再按照表2所示的 最後換位表進行IP-1的換位,得到64位的密文,這就是DES演算法加密的結果。 2.加密變換過程 通過重復某些位將32位的右半部分按照擴展表3擴展換位表擴展為48位,而56位的密鑰先移位然後通過選擇其中的某些位減少至48位,48位的右半部分通過異或操作和48位的密鑰結合,並分成6位的8個分組,通過8個S-盒將這48位替代成新的32位數據,再將其置換一次。這些S-盒輸入6位,輸出4位。 一個S盒中具有4種替換表(行號用0、1、2、3表示),通過輸入的6位的開頭和末尾兩位選定行,然後按選定的替換表將輸入的6位的中間4位進行替代,例如:當向S1輸入011011時,開頭和結尾的組合是01,所以選中編號為1的替代表,根據中間4位1101,選定第13列,查找表中第1行第13列所示的值為5,即輸出0101,這4位就是經過替代後的值。按此進行,輸出32位,再按照表4 單純換位表P進行變換,這樣就完成了f(R,K)的變換 3.子密鑰生成過程 鑰通常表示為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,再將C1和D1進行循環左移和PC-2壓縮換位,得到子密鑰K2......以此類推,得到16個子密鑰。密鑰壓縮換位表如表6所示。在產生子密鑰的過程中,L1、L2、L9、L16是循環左移1位,其餘都是左移2位,左移次數如表7所示。 詳細信息見 http://www.studa.net/yingyong/100126/11085967.html