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

正文內(nèi)容

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

  

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