freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)設計-des加密算法分析(完整版)

2025-01-17 13:22上一頁面

下一頁面
  

【正文】 是每一秒種檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近 2285年的時間,可見,這是難 以實現(xiàn)的,當然,隨著科學技術的發(fā)展,當出現(xiàn)超高速計算機后,我們可考慮把 DES密鑰的長度再增長一些,以此來達到更高的保密程度。在 20 世紀90年代初, Biham與 Shamir發(fā)現(xiàn)差分分析時,美國國家安全局就已承認某些未公布的 S盒設計原則正是為了使得差分密碼分析變得不可行??傊?DES密鑰太短,超期服役的時間也太長。 雖然 DES加密算法已經(jīng)過時,但它的基本理論和設計思想仍有重要參考價值。 24 附錄 1 DES 算法用 C++實現(xiàn)的源代碼 用 C++實現(xiàn)的源代碼 include include enum {encrypt,decrypt}。//循環(huán)左移 //字節(jié)組轉換成位組 static void bytetobit(bool *out,const char *in, int bits)。 //左移位數(shù)表 const static char loop_table[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}。 if(type==encrypt){ for(int i=0。i){ memcpy(tmp,li,32)。k[28]。 } } void f_func(bool in[32],const bool ki[48]) 28 { static bool mr[48]。 k=(in[1]3)+(in[2]2)+(in[3]1)+in[4]。 } void xor(bool *ina,const bool *inb,int len) { for(int i=0。ibits。p39。r39。 printf(\n)。 puts(str)。 puts(****************************************)。m39。o39。 for(int i=0。 memcpy(tmp,in,loop)。 for(int i=0。 transform(in,in,p_table,32)。i16。 } } transform(m,m,ipr_table,64)。 xor(ri,li,32)。m[0], *ri=amp。 //E 位選擇表 static const char e_table[48]={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}。//f函數(shù) static void s_func(bool out[32],const bool in[48])。 從當初確定題目到 最后一個功能模塊的完成,經(jīng)歷了無數(shù)次的錯誤、修改代碼、重啟服務器、運行的過程,感覺到平時學的知識是多么的淺薄,書到用時方恨少,現(xiàn)在是體驗的真真切切。對 DES算法而言,線性攻擊更有效。在所有的密鑰空間中有極少量的弱密鑰,如全 0和全 F 的密鑰等,在選擇時應盡量避免。在算法提出時,就有人懷疑 S盒隱藏了“陷門”??傻? C0=11101100 10011001 00011011 1011 D0=10110100 01011000 10001110 0111 C0, D0 分別進行循環(huán)左移運算,得到 C1, D1。 puts(****************************************)。 puts(after encrypting:)。 printf(\n)。,39。 DES 算法的主函數(shù) void main() 主函數(shù)的流程: void main() { char key[8]={39。 memcpy(ri,tmp,32)。 f_func(ri,subkey[i])。 void des_run(char out[8],char in[8], bool type) { static bool m[64],tmp[32],*li=amp。1。 ( 5) xor() 此函數(shù)的功能是進行異或運算,異或運算是按位作不進位加法運算。 void s_func(bool out[32],const bool in[48]) { for(char i=0,j,k。ilen。//s盒代替 //變換 static void transform(bool *out, bool *in, const char *table, int len)。 DES 算法的解密過程 DES算法的解密過程跟加密過程是一樣的,區(qū)別僅僅在于第一次迭代時用密鑰 k16,第二次 k1??,最后一次用 k1,算法本身沒有任何變化。 則 S2的輸出為 1111。計算 E( R) ? K=B,對 B施行代換S,此代換由 8個代換盒組成,即 S盒。即 Li=Ri1, Ri=Li1 f(Ri1,ki)。 T1 DES是對二元數(shù)字分組加密的分組密碼算法,分組長度為 64比特。也就是說,若是能用類似 TripleDES或是 DESX的方式加長密鑰長度,仍不失為一個安全的密碼系統(tǒng)。 DES自從公布以來,已成為金融界及其他各種行業(yè)最廣泛應用的對稱密鑰密碼系統(tǒng)。 AES和 DES分別是這兩種結構的代表。 圖 分組密碼的優(yōu)點在于其容易實現(xiàn)同步,因為一個密文組的傳輸錯誤不會影響其他組,丟失一個明密文組不會對其后的組的解密正確性帶來影響。 流密碼是利用密鑰 k產生一個密鑰流 z=z0z1? ,并使用如下規(guī)則對明文串 x=x0x1x2?加密: y=y0y1y2?=Ez0(x0)Ez1(x1)Ez2(x2)? 。本次學年論文介紹的就是分組加密技術中最典型的加密算法 —— DES算法。這篇文章過了 30年后才顯示出它的價值。特別是在網(wǎng)絡化的今天,大量敏感信息(如考試成績、個人簡歷、體檢結果、實驗數(shù)據(jù)等)常常要通過互聯(lián)網(wǎng)進行交換。 摘 要 DES 數(shù)據(jù)加密算法是使用最廣的分組加密算法,它作為最著名的保密密鑰或對稱密鑰加密算法,在計算機密碼學及計算機數(shù)據(jù)通信的發(fā)展過程中起了重要作用。(現(xiàn)代電子商務也是以互聯(lián)網(wǎng)為基礎的。 1976年, Diffie和 Hellman發(fā)表了論文《密碼學的新方向》,提出了公鑰密碼體制的新思想,這一思想引發(fā)了科技界對研究密碼學的極大興趣,大量密碼學論文開始公開發(fā)表,改變了過去只是少數(shù)人關起門來研究密碼學的狀況。 2 第二章 概 述 加密與解密 加密技術是基于密碼學原理來實現(xiàn)計算機、 網(wǎng)絡乃至一切信息系統(tǒng)安全的理論與技術基礎。密鑰流由密鑰流發(fā)生器 f產生: zi=f(k,σi) , 這里 σi 是加密器中的記憶元件(存儲器)在時刻 i的狀態(tài), f是由密鑰 k和 σi 產生的函數(shù)。 分組密碼又分為三類:代替密碼( Substitution)、移位密碼( Transposition)和乘積密碼。 Feistel 網(wǎng)絡(又稱 Feistel結構)可把任何輪函數(shù)轉化為一個置換,它是由 Horst Feistel在設計 Lucifer分組密碼時發(fā)明的,并因 DES的使用而流行,“加解密相似”是 Feistel型密碼的實現(xiàn)優(yōu)點。DES是分組密碼的典型代表,也是第一個被公布出來的標準算法。 早在 DES提出不久,就有人提出造一專用的裝置來對付 DES,其基本 思想無非是借用硬件設備來實現(xiàn)對所有的密鑰進行遍歷搜索。每 64 位明文加密成 64位密文,沒有數(shù)據(jù)壓縮和擴展,密鑰長度為 56比特,若輸入 64比特,則第 8, 16,24, 32, 40, 48, 56, 64為奇偶校驗位,所以,實際密鑰只有 56位。 IP( m) . 下面是完全 16輪 DES算法框圖: 圖 完全 16輪 DES算法 7 初始置換 IP 初始置換是將輸入的 64位明文分為 8個數(shù)組,每一組包括 8位,按 1至 64編號。其中輪密鑰 Ki為 48比特,函數(shù) F(R,K)的計算過程如圖 。每個 S盒有 6個輸入, 4個輸出,將 B依次分為 8組,每組 6位,記 B= B1B2B3B4B5B6B7B8其中 Bj作為第 j個 S盒的輸入,其輸出為 Cj,C= C1C2C3C4C5C6C7C8就是代換 S的輸出,所以代換 S是一個 48位輸入, 32位輸出的選擇壓縮運算,將結果 C再實行一個置換 P(表 4),即得 F(R,K)。 8個 S盒的代換方式都是一樣的。 14 第四章 DES 算法用 C++語言實現(xiàn) 設置密鑰函數(shù) des_setkey() 此函數(shù)的功能是由 64比特的密鑰產生 16個子密鑰 ki。 static void xor(bool *ina, const bool *inb, int len)。i++) 15 tmp[i]=in[table[i]1]。i8。 void xor(bool *ina,const bool *inb,int len) 16 { for(int i=0。 } 與此相關的還有函數(shù) ttobyte() 此函數(shù)的功能是將位組轉換字節(jié)組。m[0], *ri=amp。 xor(ri,li,32)。 } } transform(m,m,ipr_table,64)。p39。r39。 printf(\n)。 puts(str)。 printf(\n)。 C1=11011001 00110010 00110111 0111 D1=01101000 10110001 00011100 1111 依次類推, C1, D1繼續(xù)進行循環(huán)左移,最后得到 C2, D2進行循環(huán)左移,得到 C3, D3??C16, D16。而美國國家安全局能夠輕易的解密消息,同時還能宣稱 DES 算法是“安全”的。這一點,向我們提出了一個應用上的要求,即 DES 的安全性是基于除了 8, 16, 24, ......64位外的其余 56位的組合變化 256才得以保證的。在 1994年,一個實際的線性密碼分析 由其發(fā)明者 22 Matsui提出。本來已經(jīng)耳熟能詳?shù)拇a,一到 IDE 中書寫,卻提筆忘字,這充分的反應了我平時的基本功不扎實,常用代碼的不熟練。//s盒代替 //變換 static void transform(bool *out, bool *in, const char *table, int len)。 //P換位表 const static char p_table[32]={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}。m[32]。 memcpy(li,tmp,32)。 bittobyte(out,m,64)。i++) { rotatel(kl,28,loop_table[i])。 } void s_func(bool out[32],const bool in[48]) { for(char i=0,j,k。ilen。 memcpy(in,in+loop,lenloop)。ibits。,39。},str[8]。 des_setkey(key)。 puts(after encrypting:)。 printf(\n)。,39。 } void main() { char key[8]={39。 } void bytetobit(bool *out,const char *in,int bits) { for(int i=0。 memcpy(out,tmp,len)。i++,in+=6,out+=4) { j=(in[0]1)+in[5]。 transform(subkey[i],k,pc2_table,48)。k[0], *kr=amp。i=0。 transf
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1