




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上密碼學(xué)與網(wǎng)絡(luò)安全課程實(shí)驗(yàn)利用Matlab語(yǔ)言實(shí)現(xiàn)DES加密算法姓名:ZA 學(xué)號(hào):XXXXX一、 實(shí)驗(yàn)?zāi)康?) 牢固掌握DES密碼算法2) 通過(guò)編程實(shí)現(xiàn)DES算法,深入掌握現(xiàn)代密碼算法實(shí)現(xiàn)的基本方法3) 驗(yàn)證DES算法中各個(gè)模塊在實(shí)現(xiàn)混淆和彌散中的作用二、 實(shí)驗(yàn)內(nèi)容要求1) DES算法實(shí)現(xiàn):利用Matlab語(yǔ)言實(shí)現(xiàn)DES密碼算法,輸入64比特明文和56比特密鑰,加密得到64比特的密文;2) DES弱密鑰驗(yàn)證:觀察弱密鑰兩次加密的結(jié)果,與非弱密鑰兩次加密的結(jié)果進(jìn)行比較;3) DES算法初步應(yīng)用:嘗試加密一個(gè)字符串,字符串的長(zhǎng)度大于8個(gè)字節(jié);4) DES彌散特性分析:試輸出
2、每一輪加密得到的比特序列,并比較當(dāng)初始明文1個(gè)比特發(fā)生變化時(shí),每一輪加密輸出的哪些比特發(fā)生變化。三、 實(shí)驗(yàn)方案與步驟3.1 DES算法實(shí)現(xiàn)a) 算法實(shí)現(xiàn)方案Matlab(矩陣實(shí)驗(yàn)室)是一款工程計(jì)算用的軟件,功能十分強(qiáng)大。Matlab的計(jì)算基于矩陣,而DES算法用矩陣描述是十分簡(jiǎn)潔方便的。因此,選用Matlab作為算法實(shí)現(xiàn)語(yǔ)言,基于一系列的矩陣變換、運(yùn)算來(lái)實(shí)現(xiàn)DES算法的加密。b) 主要功能實(shí)現(xiàn)流程及代碼解析1) 加密程序圖1 DES基本結(jié)構(gòu)DES算法的結(jié)構(gòu)非常簡(jiǎn)單,是一個(gè)16次的迭代。核心是函數(shù)中一系列變換。根據(jù)算法框圖,程序步驟主要分為三大部分:1) 輸入明文和密鑰進(jìn)行字符轉(zhuǎn)換2) 產(chǎn)生16
3、輪密鑰矩陣3) 16輪迭代%demo5.mclc, clear all;%-第一步 輸入明文和密鑰-%M='ABCDEF'% K='ABCDEF'%MB=; for i=1:16 Mi=M(i); MBi='0000',dec2bin(hex2dec(Mi); MBi=MBi(end-3:end); MBi=str2num(MBi(1),str2num(MBi(2),str2num(MBi(3),str2num(MBi(4); MB=MB,MBi; endM=MB;% 轉(zhuǎn)化為64位二進(jìn)制明文KB=; for i=1:16 Ki=K(i); KBi
4、='0000',dec2bin(hex2dec(Ki); KBi=KBi(end-3:end); KBi=str2num(KBi(1),str2num(KBi(2),str2num(KBi(3),str2num(KBi(4); KB=KB,KBi; endK=KB;% 轉(zhuǎn)化為64位二進(jìn)制密鑰 %-第三步 產(chǎn)生密鑰-%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
5、,53,45,37,29,21,13,5,28,20,12,4;%PC_1置換矩陣 56位KEY0=K(PC_1);% 初始矩陣變換 64 to 56%循環(huán)移位>>>>>shift_array=-1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1; C(1,:)=KEY0(1:28);%C0D(1,:)=KEY0(29:56);%D0for i=2:17C(i,:)=circshift(C(i-1,:)',shift_array(i-1)' %前28位循環(huán)移位%circshift是右移 移動(dòng)負(fù)數(shù)位表示左移D(i,:)=circshift
6、(D(i-1,:)',shift_array(i-1)' %后28位循環(huán)移位endPC2=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;Ki=zeros(16,48);%循環(huán)移位>>>>>KEY_MAT=C,D;%17*56KEY_MAT=KEY_MAT(2:17,:);%16*56PC_2=14,17,11,24,1,5,3
7、,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; for i=1:16Ki(i,:)=KEY_MAT(i,PC_2);endKEY=Ki;%-第四步 Feistel結(jié)構(gòu)-%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
8、 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7;%IP初始置換矩陣 M=M(IP);%初始置換 m0_L=M(1:32); %輸入的左半部分明文 m0_R=M(33:64);% 輸入的右半部分明文 L,R=fchange(m0_L,m0_R,1,KEY); mi=L,R; mi2_hex(1,:)=mi%進(jìn)入16輪迭代> for i=2:16 L,R=fchange(L,R,i,KEY); mi=L,R; mi2_hex(i,:)=mi end IP_1=40 8 48 16 56 24 64 32 3
9、9 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;%IP_1初始逆置換矩陣m16=R,L;% 最后一步進(jìn)行交換C=m16(IP_1); %IP逆置換m_hex=m_2_hex(C)% 轉(zhuǎn)化為16進(jìn)制 輸出密文%fchange.mfunction Li,Ri = fchange(Li_1,Ri_1,m,KEY)%第i輪f函數(shù)的實(shí)現(xiàn)
10、輸入Ri-1 表示第i-1輪的右半部分密文 輸出第i輪的密文 Ri_1_ex=trm32_to_48(Ri_1);% 第一步 右半明文進(jìn)行32to48擴(kuò)展 OK Ri_1_ex2=reshape(Ri_1_ex',1,48); %將擴(kuò)展的48位變?yōu)橄蛄?OK f=bitxor(KEY(m,:),Ri_1_ex2); %與第i輪密鑰按位異或 f1=reshape(f,6,8)' %變?yōu)榫仃?8個(gè)6位二進(jìn)制數(shù) 8*6 %經(jīng)過(guò)S1盒 s=S_box(1); x=2*f1(1,1)+f1(1,6); %S盒縱坐標(biāo) y=8*f1(1,2)+4*f1(1,3)+2*f1(1,4)+f1(1
11、,5); %S盒橫坐標(biāo) f2=s(x+1,y+1); %取S盒中某一數(shù) f2_bin='0000',dec2bin(f2);% % 字符串處理 f2_bin=f2_bin(end-3:end); f2_1=str2num(f2_bin(1),str2num(f2_bin(2),str2num(f2_bin(3),str2num(f2_bin(4);%省略s2s8盒 Ri_1_P=P_exchange(f2S); %轉(zhuǎn)化為向量并置換運(yùn)算P Ri=bitxor(Li_1,Ri_1_P); %Li_1與f函數(shù)后的Ri_1進(jìn)行按位異或 Li=Ri_1; %交換位置end程序見(jiàn)。2) 解
12、密程序DES算法設(shè)計(jì)巧妙也體現(xiàn)在其解密過(guò)程非常簡(jiǎn)單,結(jié)構(gòu)和加密算法完全一樣,只需要將16輪加密所用的密鑰完全倒過(guò)來(lái)。對(duì)密鑰矩陣16X64的行倒序排列,得到倒過(guò)來(lái)后的密鑰矩陣。其余部分與解密程序保持一致即可。解密時(shí),輸入密文和密鑰,得到明文。 程序見(jiàn)。c) 加密64比特明文,對(duì)密文進(jìn)行解密得到明文,觀察是否與初始明文一致加密。這里用Matlab 中的GUI界面編寫了加解密的交互程序。交互程序見(jiàn)desecb.m。在程序demo5.m中輸入64比特明文及64比特密鑰:M='ABCDEF'K='ABCDEF'運(yùn)行:m_hex = 56CC09E7CFDC4CEF圖2 D
13、ES_demo GUI界面解密:在程序demo5_inv.m中輸入64比特密文及64比特密鑰:M='56CC09E7CFDC4CEF'K='ABCDEF'運(yùn)行: m_hex =ABCDEF將密文解密后與初始明文一致。為了證明程序?qū)ES算法的正確實(shí)現(xiàn),用密碼學(xué)習(xí)軟件Cryptool進(jìn)行了驗(yàn)證。加密結(jié)果與本程序一致。圖3 CrypTool加密結(jié)果3.2 DES弱密鑰驗(yàn)證a) 用選定的弱密鑰進(jìn)行兩次加密,觀察得到的結(jié)果用已知四個(gè)弱密鑰中的一個(gè)FFFFFFFFFFFFFFFF,對(duì)'ABCDEF'進(jìn)行加密:M='ABCDEF'K='
14、;FFFFFFFFFFFFFFFF'm_hex =6DCE0DCA3再次加密:M='6DCE0DCA3'K='FFFFFFFFFFFFFFFF'm_hex = ABCDEF可以看出,兩次加密后密文和第一次的初始明文一樣,相當(dāng)于是加密后再解密。驗(yàn)證了弱密鑰。b) 用選定的非弱密鑰進(jìn)行兩次加密,觀察得到的結(jié)果用已知四個(gè)半弱密鑰中的一個(gè)01FE01FE01FE01FE和對(duì)'ABCDEF'進(jìn)行加密: M='ABCDEF' K='01FE01FE01FE01FE'm_hex =8A76C7A4F16D47ED再用與0
15、1FE01FE01FE01FE對(duì)應(yīng)的半弱密鑰FE01FE01FE01FE01FE01加密:M='8A76C7A4F16D47ED'K='FE01FE01FE01FE01'm_hex =ABCDEF可以看出,一對(duì)半弱密鑰能夠互相加解密。3.3 DES算法初步應(yīng)用a) 任意選定一個(gè)長(zhǎng)度大于8個(gè)字符的字符串,設(shè)計(jì)一種方法對(duì)這個(gè)字符串進(jìn)行加密用電碼本模式ECB直接對(duì)明文分成以64位一組的塊,這里用密文分組鏈接模式CBC來(lái)實(shí)現(xiàn)。 算法步驟:1) 對(duì)任意長(zhǎng)(m bit)明文分成N組,每組64bit2) 初始向量IV與第一組明文異或3) 第i-1組密文與第i組明文異或作為DE
16、S的輸入明文4) 迭代N-1次5) 得到N*64bit密文,截取為 m bit算法框圖為:圖4 DES_CBC模式基本結(jié)構(gòu)程序編寫主要實(shí)現(xiàn)對(duì)任意長(zhǎng)明文分組,以及對(duì)DES外圍結(jié)構(gòu)的改變。主要代碼如下:M='ABCDEFABCDABCDEFABCD'% 任意長(zhǎng)明文K='ABCDEF'%密鑰IV='AABBCCDD' %初始向量%*明文分組»»a=ceil(length(M)/16); %向上取整 MB=M; for i=1:16*a-length(M) MB=MB '0' endMi=;for j=1:a Mi(j
17、,:)=MB(16*j-15):16*j); endM=bitxor(M,IV); %算法核心是先按位異或再輸入DES程序見(jiàn),。運(yùn)行,得密文:C_CBC =21BC605D513B38E8D8EF6671DD7E6266C1FA5AC143D26與明文等長(zhǎng)(60*4bit)。b) 分析你所設(shè)計(jì)的這種方法有什么優(yōu)點(diǎn)和/或缺點(diǎn)CBC算法的優(yōu)點(diǎn)很明顯能有效地避免ECB對(duì)明文統(tǒng)計(jì)特征的泄漏,因?yàn)橥幻魑膲K輸入DES中的實(shí)際明文是不一樣的。CBC算法的缺點(diǎn)也是很明顯的,由于其算法結(jié)構(gòu)的限制,CBC不能實(shí)現(xiàn)并行運(yùn)算,且誤差傳遞效應(yīng)比ECB差,一個(gè)密文塊損壞,會(huì)引起兩個(gè)明文塊損壞。3.4 DES彌散特性分析
18、a) 選擇任意64比特明文m,選擇任意56比特密鑰k進(jìn)行加密,并輸出每一輪加密的64比特序列選定明文和密鑰,依次輸出每一輪加密輸出的密文:明文:M='ABCDEF'密鑰:K='ABCDEF'每一輪的加密結(jié)果如下表所示:輪數(shù)密文輪數(shù)密文1F0AAF0AA5E1CEC6325E1CEC6382E13C49382E13CF94F90DD64AFB50DD64AFBB6BF1470BC27F1470BC2394C8F458394C8F45348DC7469348DC746F37100C610F37100C63C22A9CB113C22A9CB0A37C369120A37
19、C3695C725FFB135C725FFBF4748AD614F4748AD6CC6C340E15CC6C340EBA88F69916BA88F699FB21FB9C 表1 16輪加密結(jié)果b) 隨機(jī)改變m中的一個(gè)比特,用上述密鑰k進(jìn)行加密,并輸出每一輪加密的64比特序列,與上一步的結(jié)果進(jìn)行比較,你發(fā)現(xiàn)了什么?將明文:M='ABCDEF'中第四位二進(jìn)制改為1, 則明文變?yōu)椋篗='ABCDEF', 用相同的密鑰加密,用紅字標(biāo)注出前6輪密文中與之前對(duì)應(yīng)相等的位數(shù),結(jié)果為:輪數(shù)密文輪數(shù)密文1F0AAF0AA5E1DEC6325E1DEC63A3E52C893A3E52
20、C89ECE9D0E24ECE9D0E269DD75C5569DD75C5ABC7850D6ABC7850D0DC7CB6170DC7CB61A75AF6488A75AF64855F4CFF9955F4CFF92689AB42102689AB4249F546141149FDFDC287122DFDC287A13AAB62F91498AB62F9D4C4149D15D4C4149DCF16CFAAE41685 表3 明文改變1bit后的16輪加密結(jié)果首先定性的可以明顯看出:第一輪密文有1bit不相等: 即第二輪密文有7bit 不相等: 即 即 即 即 即 即為了說(shuō)明彌散特性,對(duì)改變后的16輪密文與之前產(chǎn)生密文進(jìn)行定量分析(相等位數(shù)檢查程序見(jiàn)):輪數(shù)相等位數(shù)輪數(shù)相等位數(shù)1632573424315306347358329311022112412301325143415311625 表4 明文改變1bit前后的16輪加密結(jié)果中相等比特位數(shù)由上表可以看出,隨著輪數(shù)增加,初始明文1bit的改變對(duì)于密文的彌散效應(yīng)越好。理論上,任意兩個(gè)64位二進(jìn)制序列相等時(shí)在相等位數(shù)為32時(shí)概率最大(每一位取0,1是等概率的), 因此在第四輪之后可認(rèn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度股份代持與股權(quán)激勵(lì)實(shí)施方案協(xié)議
- 2025年度足療中心員工工資保底與員工滿意度調(diào)查協(xié)議
- 房產(chǎn)證抵押貸款額度調(diào)整協(xié)議(2025年度)
- 2025年度食品包裝設(shè)計(jì)及委托加工合同
- 二零二五年度儲(chǔ)蓄存款業(yè)務(wù)創(chuàng)新激勵(lì)機(jī)制合同
- 二零二五年度銀行賬戶監(jiān)管協(xié)議:銀行賬戶資金監(jiān)管與網(wǎng)絡(luò)安全保障合同
- 二零二五年度智能物流件代發(fā)合作協(xié)議
- 二零二五年度體育賽事運(yùn)營(yíng)補(bǔ)充協(xié)議范本
- 二零二五年度茶飲連鎖品牌全國(guó)代理權(quán)獨(dú)家協(xié)議
- 幼兒園學(xué)生人身安全賠償協(xié)議范本2025
- 2025年三八婦女節(jié)校長(zhǎng)致辭-以柔韌破萬(wàn)鈞以丹心育桃李
- 2025年浙江省建筑安全員C證考試(專職安全員)題庫(kù)及答案
- 2025年健身教練合同協(xié)議樣本
- 2025年常州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)(培優(yōu))
- 旅游景區(qū)旅游安全風(fēng)險(xiǎn)評(píng)估報(bào)告
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
- 2024年黑龍江職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 大班-數(shù)學(xué)-分禮物-課件(互動(dòng)版)
- 2024年山東力明科技職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 2023年新改版教科版四年級(jí)下冊(cè)科學(xué)練習(xí)題(一課一練+單元+期中+期末)
- 合作學(xué)習(xí)小組的劃分及組員的培訓(xùn)
評(píng)論
0/150
提交評(píng)論