導航:首頁 > 文檔加密 > 對稱可搜索加密演算法

對稱可搜索加密演算法

發布時間:2025-05-05 03:49:23

1. des是什麼演算法

des是1972年美國IBM公司研製的對稱密碼體制加密演算法。DES演算法具有極高安全性,除了用窮舉搜索法對DES演算法進行攻擊外,還沒有發現更有效的辦法。

一、des演算法簡介
DES演算法為密碼體制中的對稱密碼體制,又被稱為美國數據加密標准,是1972年美國IBM公司研製的對稱密碼體制加密演算法。 明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1)分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法。
二、des演算法基本原理
DES演算法入口參數有三個:key、data、mode。key為加密解密使用的密鑰,data為加密解密的數據,mode為其工作模式。當模式為加密模式時,明文按照64位進行分組,形成明文組,key用於對數據加密,當模式為解密模式時,key用於對數據解密。實際運用中,密鑰只用到了64位中的56位,這樣才具有高的安全性。
三、des演算法特點
DES演算法具有極高安全性,除了用窮舉搜索法對DES演算法進行攻擊外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間為2^56,這意味著如果一台計算機的速度是每一秒鍾檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的時間,可見,這是難以實現的。然而,這並不等於說DES是不可破解的。而實際上,隨著硬體技術和Internet的發展,其破解的可能性越來越大,而且,所需要的時間越來越少。使用經過特殊設計的硬體並行處理要幾個小時。

2. 關於加解密、加簽驗簽的那些事

生活中加密技術無處不在,盡管你可能對MD5、SHA、DES、AES、RSA等術語感到陌生,但它們在數據安全中的重要性不言而喻。程序員必備的加解密和加簽驗簽概念,其實並不遙遠,比如在日常娛樂中,繞口令「小癟三A,小赤佬B,唉呀媽呀C,坑爹呀D」也可視為密碼學的簡單應用。

密碼學分為古典密碼和現代密碼兩個階段,古典密碼如古埃及的簡單字元替換和古羅馬的凱撒密碼,雖然基礎但易破解。近代密碼學則起源於軍事通信需求,如無線電通信的加密和破譯推動了密碼學的發展。1949年,香農的《通信理論》將密碼學與資訊理論結合,催生了對稱加密和非對稱加密的現代形式。

對稱加密演算法,如DES、AES,其特點是加密解密使用同一密鑰,效率高但秘鑰管理困難。DES加密是通過搜索密鑰實現,而AES則廣泛應用,其密鑰長度可變,更安全。在Java中,我們可以通過這些演算法進行數據加密和解密。

非對稱加密,如RSA,以公鑰和私鑰區分,公鑰用於加密,私鑰用於解密和簽名。比如銀行和客戶間的交易,通過公鑰加密信息保證只有指定方能解讀,私鑰用於驗證信息的完整性和來源。在RSA中,生成密鑰、加密和解密、加簽驗簽都是開發中常見的操作。

數據摘要演算法,如MD5,是不可逆的,確保信息完整性和真實性。在實際應用中,如數字簽名,通過哈希演算法生成的摘要驗證數據的原始性和來源,如MD5在Java中的實現。

3. 對稱加密演算法的加密演算法主要有哪些

1、3DES演算法

3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的加密標准),加密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的密鑰,M代表明文,C代表密文,這樣:

3DES加密過程為:C=Ek3(Dk2(Ek1(M)))

3DES解密過程為:M=Dk1(EK2(Dk3(C)))

2、Blowfish演算法

BlowFish演算法用來加密64Bit長度的字元串。

BlowFish演算法使用兩個「盒」——unsignedlongpbox[18]和unsignedlongsbox[4,256]。

BlowFish演算法中,有一個核心加密函數:BF_En(後文詳細介紹)。該函數輸入64位信息,運算後,以64位密文的形式輸出。用BlowFish演算法加密信息,需要兩個過程:密鑰預處理和信息加密。

分別說明如下:

密鑰預處理:

BlowFish演算法的源密鑰——pbox和sbox是固定的。我們要加密一個信息,需要自己選擇一個key,用這個key對pbox和sbox進行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化演算法如下:

1)用sbox填充key_sbox

2)用自己選擇的key8個一組地去異或pbox,用異或的結果填充key_pbox。key可以循環使用。

比如說:選的key是"abcdefghijklmn"。則異或過程為:

key_pbox[0]=pbox[0]abcdefgh;

key_pbox[1]=pbox[1]ijklmnab;

…………

…………

如此循環,直到key_pbox填充完畢。

3)用BF_En加密一個全0的64位信息,用輸出的結果替換key_pbox[0]和key_pbox[1],i=0;

4)用BF_En加密替換後的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];

5)i+2,繼續第4步,直到key_pbox全部被替換;

6)用key_pbox[16]和key_pbox[17]做首次輸入(相當於上面的全0的輸入),用類似的方法,替換key_sbox信息加密。

信息加密就是用函數把待加密信息x分成32位的兩部分:xL,xRBF_En對輸入信息進行變換。

3、RC5演算法

RC5是種比較新的演算法,Rivest設計了RC5的一種特殊的實現方式,因此RC5演算法有一個面向字的結構:RC5-w/r/b,這里w是字長其值可以是16、32或64對於不同的字長明文和密文塊的分組長度為2w位,r是加密輪數,b是密鑰位元組長度。

(3)對稱可搜索加密演算法擴展閱讀:

普遍而言,有3個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位的DES密鑰),但由於中途相遇攻擊,它的有效安全性僅為112位。密鑰選項2將密鑰長度縮短到了112位,但該選項對特定的選擇明文攻擊和已知明文攻擊的強度較弱,因此NIST認定它只有80位的安全性。

對密鑰選項1的已知最佳攻擊需要約2組已知明文,2部,2次DES加密以及2位內存(該論文提到了時間和內存的其它分配方案)。

這在現在是不現實的,因此NIST認為密鑰選項1可以使用到2030年。若攻擊者試圖在一些可能的(而不是全部的)密鑰中找到正確的,有一種在內存效率上較高的攻擊方法可以用每個密鑰對應的少數選擇明文和約2次加密操作找到2個目標密鑰中的一個。

4. 對稱加密演算法之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

5. des是什麼演算法

DES是一種對稱加密演算法,最初由IBM公司於1972年開發。這種演算法被設計為一種高度安全的加密方法,除了通過窮舉搜索破解之外,沒有其他更為有效的攻擊手段。

DES演算法基於對稱密鑰體制,即加密和解密使用相同的密鑰。密鑰長度為64位,但實際上只有56位用於加密計算(其他8位作為奇偶校驗位,確保密鑰中有奇數個1)。明文被分成64位一組,與56位的密鑰通過位替換和交換操作生成密文。

DES演算法的入口參數包括key、data和mode。key是用於加密和解密的密鑰,data是要加密或解密的數據,mode定義了演算法的工作模式。在加密模式下,明文被分成64位一組進行處理,密鑰被用來加密數據;而在解密模式下,密鑰用於解密數據。

盡管56位的密鑰提供了很高的安全性,因為窮舉所有可能的密鑰需要大約2285年的時間,但隨著計算能力的提升,破解DES變得越來越容易。硬體技術的進步和互聯網的普及,使得破解的時間大大縮短,現在只需幾個小時甚至更短的時間。

因此,盡管DES在當時被認為是非常安全的加密演算法,但隨著技術的發展,其安全性受到了挑戰。為了應對這些挑戰,後來開發了更安全的加密演算法,如AES(高級加密標准)。

閱讀全文

與對稱可搜索加密演算法相關的資料

熱點內容
cad左手快捷鍵命令 瀏覽:748
sketchup快捷命令 瀏覽:788
編程程序員死亡之謎 瀏覽:296
qt編譯64位dll 瀏覽:889
分治演算法經典 瀏覽:956
pdfeditor軟體 瀏覽:459
pc最准演算法 瀏覽:727
mysql登錄命令as 瀏覽:815
如何虛擬機中做游戲伺服器配置 瀏覽:454
如何在手機上傳app到小米盒子 瀏覽:755
解壓按摩全身視頻 瀏覽:118
如何打mc伺服器 瀏覽:517
有什麼比較好用的約游戲app 瀏覽:129
zip壓縮包官方下載 瀏覽:258
程序員節開源英雄會 瀏覽:584
小程序源碼雲開發無需伺服器 瀏覽:736
文件夾擁有者未知 瀏覽:874
天勤數據結構pdf 瀏覽:276
廣義的機器人編程語言有 瀏覽:673
python爬蟲url怎麼看 瀏覽:713