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)
——用相同的密鑰進行加密和解密
此次主要介紹比特序列運算和XOR(異或)運算。這兩種運算在計算機數據處理中經常出現,因此大家應該在此屬性他們。
DES(Data Encryption)是1977年美國聯邦信息處理標准(FIPS)中所採用的一種對稱密碼(FIPS46-3)。DES一直以來被美國及其他國家的政府和銀行等廣泛使用。
隨著計算機的進步,現在DES已經能夠被暴力破解,強度大不如前了。20世紀末,RSA公司舉辦過破譯DES密鑰的比賽,我們可以看一看RSA公司官方公布的比賽結果:1997年的DES Challenge I 中用了96天破譯密鑰,1998年的DES Challenge II-1中用了41天,1998年的DES Challenge II-2中用了56小時,1999年的DES Challenge III 中只用了22小時15分鍾。
由於DES的密文可以在短時間內被破譯,因此除了用它來解密一起的密文以外,現在我們不應該再使用DES了。
DES是一種將64比特的明文加密成64比特的密文的對稱密碼演算法,它的密鑰的長度是56比特。盡管從規格上來說,DES的密鑰長度是64比特,但由於每隔7比特會設置一個用於錯誤檢查的比特,因此實質上其密鑰長度是56比特。
DES 是以64比特的明文(比特序列)為一個單位來進行加密的,這個64比特的單位稱為 分組 ,一般來說,以分組為單位進行處理的密碼演算法稱為 分組密碼 ,DES就是分組密碼的一種。
DES每次只能加密64比特的數據,如果要加密的明文比較長,就需要對DES加密進行迭代(反復),而迭代的具體方式就稱為 模式 。
DES的基本結構是由Horst Feistel設計的,因此也稱為 Feistel網路(Feistel network) 、Feistel結構(Feistel structure)或者Feistel密碼(Feistel cipher)。這一結構不僅被用於DES,在其他很多密碼演算法中也有應用。
Feistel網路中,加密的各個步驟稱為輪,整個加密過程就是進行若干次輪的循環,下圖,展現的是Feistel網路中一輪的計算流程。DES是一種16輪循環的Feistel網路。
但是,這樣看來,「右側」根本沒有加密,因此我們需要用不同的子密鑰對一輪的處理重復若干次,並在沒兩輪處理指間將左側和有責的數據對調。
上圖展現了一個3輪的Feistel網路,3輪加密計算需要進行兩次左右對調。對調只在兩輪指間進行,租後一輪結束不需要對調。
那麼,Feistel網路如何解密呢?
如上圖所示,通過上述操作都能夠將密文正確的還原明文。
有多輪的情況也是一樣的,也就是說,Feistel網路的解密操作,只要按照相反的順序來使用子密鑰就可以完成了,而Feistel網路本身的結構,在加密和解密都是完全相同的。
該系列的主要內容來自《圖解密碼技術第三版》
我只是知識的搬運工
文章中的插圖來源於原著
⑶ 屬於對稱加密演算法的有哪些
主要有DES演算法,3DES演算法,TDEA演算法,Blowfish演算法,RC5演算法,IDEA演算法。
對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。優點在於加解密的高速度和使用長密鑰時的難破解性,缺點是交易雙方都使用同樣鑰匙,安全性得不到保證。
對稱演算法的安全性依賴於密鑰,泄漏密鑰就意味著任何人都可以對他們發送或接收的消息解密,所以密鑰的保密性對通信的安全性至關重要。
(3)des有哪些對稱加密擴展閱讀
常見的加密演算法
DES演算法是密碼體制中的對稱密碼體制,把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位。
3DES是基於DES的對稱演算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
RC2和RC4是對稱演算法,用變長密鑰對大量數據進行加密,比DES快。
IDEA演算法是在DES演算法的基礎上發展出來的,是作為迭代的分組密碼實現的,使用128位的密鑰和8個循環。
RSA是由RSA公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的,非對稱演算法。
DSA,即數字簽名演算法,是一種標準的 DSS(數字簽名標准),嚴格來說不算加密演算法。
AES是高級加密標准對稱演算法,是下一代的加密演算法標准,速度快,安全級別高,在21世紀AES 標準的一個實現是 Rijndael演算法。
Blowfish演算法是一個64位分組及可變密鑰長度的對稱密鑰分組密碼演算法,可用來加密64比特長度的字元串。
⑷ 1、對稱加密演算法
指加密和解密使用相同密鑰的加密演算法。對稱加密演算法用來對敏感數據等信息進頃弊指行加密,常用的演算法包括RC4、DES、3DES、AES、DESX、Blowfish、ChaCha20、RC5、RC6。前3種演算法被認為是不安全的,通常禁止使用。
國內:SM1、SM4、ZUC
國際:DES、3DES、AES
說明:SM1的128位保密強度和性能與AES相當,SM4的128位已升級為國際標准
塊密碼演算法:DES、3DES、AES
流密碼演算法:RC4
SM1:對稱加密演算法,加密強度為128位,採用硬體實現; 演算法不公開 ,只能通過相關安全產品進行使用。
SM4:對稱演算法,隨WAPI標准一起公布,可使用軟體實現,加密強度為128位。
SM4分組密碼演算法是我國自主設計的分組對稱密碼演算法,用於實現數據的加密/解密運算,以保證數據和信息的機密性。要保證一個對稱密碼演算法的安全性的基本條件是其具備足夠的密鑰長度,SM4演算法與AES演算法具有相同的密鑰長度分組長度128比特,因此在安全性上高於3DES演算法。
DES(Data Encryption Standard) :數據加密標准,速度較快,適用於加密 大量數據 的場合。
3DES(Triple DES) :是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard) :高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
ECB(Electronic Codebook)、特點:運算快速,支持並行處理,需要填充、說明:不推薦使用
CBC (Cipher Block Chaining)、特點:支持並行處理,需要填充、說明:推薦使用
CFB(Cipher Feedback)、特點:支持並行處理,不需要填充、說明:不推薦使用
OFB(Output Feedback)、特點:迭代運算使用流密碼模式,不需要填充、說明:不推薦使用
CTR (Counter)、特點:迭代運算使用流密碼模式,支持並行處理,不需要填充、說明:推薦使用
XTS(XEX-based tweaked-codebook)、特點:不需要填充、說明:用於本地硬碟存儲解決方案中
填充標准:明文長度必須是分組長度的倍數,如雀配卜嘩不是倍數,則必須有填充機制
PKCS#7填充:可處理的分組長度是1到255個位元組
AES演算法使用標准,比如:AES-128-CBC-PKCS#7,其中秘鑰長度128,分組模式CBC,填充標准PKCS#7,AES演算法默認分組128bit
⑸ 常用對稱加密演算法
常用對稱加密演算法:
DES 3DES AES
1、DES(Data Encryption Standard)
DES加密演算法出自IBM的研究,後來被美國政府正式採用,之後開始廣泛流傳,但是近些年使用越來越少,因為DES使用56位(8位元組)密鑰,以現代計算能力,
24小時內即可被破解。雖然如此,在某些簡單應用中,我們還是可以使用DES加密演算法
特點:數據加密標准,速度較快,適用於加密大量數據的場合
2、3DES(Triple DES)
基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高
3DES是三重數據加密,且可以逆推的一種演算法方案。但由於3DES的演算法是公開的,所以演算法本身沒有密鑰可言,主要依靠唯一密鑰來確保數據加解密的安全。到目前為止,仍沒有人能破解3DES。
特點:數據加密標准,速度較快,且安全、
3、AES(Advanced Encryption Standard)推薦使用
密碼學中的高級加密標准(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。
這個標准用來替代原先的DES(Data Encryption Standard),已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標准由美國國家標准與技術研究院 (NIST)於2001年11月26日發布於FIPS PUB 197,並在2002年5月26日成為有效的標准。2006年,高級加密標准已然成為對稱密鑰加密中最流行的演算法之一 [1] 。
該演算法為比利時密碼學家Joan Daemen和Vincent Rijmen所設計,結合兩位作者的名字,以Rijdael之名命之,投稿高級加密標準的甄選流程。(Rijdael的發音近於 「Rhine doll」。)
高級加密標准,是下一代的加密演算法標准,速度快,安全級別高,支持128、192、256、512位密鑰的加密。
特點:數據加密更標准,速度更快,更安全,更流行