資源描述:
《現(xiàn)代密碼學實驗報告》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、中南大學現(xiàn)代密碼學實驗報告學生姓名文子龍學號0909081517專業(yè)班級信息安全0801班指導教師段桂華學院信息科學與工程學院完成時間2011年6月實驗一密碼算法實現(xiàn)[實驗目de]1.掌握公鑰密碼算法de基本原理,算法實現(xiàn)過程以及大數(shù)運算de方法。2.掌握和理解DES算法、AES算法de原理。[實驗內(nèi)容]1.分析RSA算法、DES算法和AES算法de原理與測試過程。2.寫出算法流程,用程序設計語言將算法過程編程實現(xiàn)。3.對輸入de數(shù)據(jù),驗證加密和解密運算。[實驗步驟]一、RSA算法1.RSA算法及原理RSA公鑰密碼系統(tǒng)以其發(fā)明者R.Rivest,A.Shamir和L
2、.Adlemande三個姓de首個字母命名de。它是應用最廣泛de公鑰密碼系統(tǒng)。不僅可以用于信息de機密性,還可用于數(shù)字簽名。其所依賴de是大整數(shù)因數(shù)分解問題。假設公鑰密碼系統(tǒng)使用N字符集。明文信息空間為-字符組組成de集合,密文信息空間為-字符組組成de集合。???RSA公鑰密碼系統(tǒng)de描述:???每個使用者產(chǎn)生各自de公鑰和私鑰???使用者A將作如下事情:???(1)隨機產(chǎn)生兩個不同de大素數(shù)p和q,具有相同de階???(2)計算n=pq和???(3)隨機選取整數(shù)???(4)運用廣義歐幾里得算法計算唯一de整數(shù),使得???(5)Ade公鑰是,私鑰是。2.RSA算
3、法加密解密過程???發(fā)送者B將明文信息加密后變成密文信息發(fā)送給接受者A,A解密。???(1)加密過程。發(fā)送者B將作如下事情:???a.得到確認de接受者Ade加密公鑰(從認證中心或電話本或信息公告欄等處得到)???b.將明文信息表示為整數(shù)。(要求以最有效de方式來表達信息)???c.計算整數(shù)???d.將整數(shù)c轉(zhuǎn)換成密文信息.???f.將密文信息發(fā)送給A.(可以在公開通道中傳遞,在不知道解密私鑰de情況下第三者無法破解密文信息)???(2)解密過程。為了將密文信息恢復為明文信息,接受者A將作如下事情:???a.將密文信息轉(zhuǎn)換成整數(shù)c.???b.運用解密私鑰恢復整數(shù).?
4、??c.將整數(shù)c轉(zhuǎn)換成明文信息.3.RSA算法Java實現(xiàn)(1)RSA算法流程圖開始得到公鑰為n和e,私鑰為d得到公鑰為n和e,私鑰為d輸入大素數(shù)p,q是否為素數(shù)NY輸入公鑰e是否15、<=k;i++){if((t%i)==0){flag=false;breakouter;}}returnflag;}b.求兩個數(shù)de最大公約數(shù)publiclonggcd(longa,longb){longgcd;if(b==0)gcd=a;elsegcd=gcd(b,a%b);returngcd;}c.求乘法逆publicintgetValue(intx,inty){intyValue=y;int[][]c=newint[2][2];//cisthemultiplyofmatrix//xislessthanyif(x>y)x=x%y;inti=0;while(tru
6、e){intk=y%x;a[i]=(k-y)/x;i++;length++;if(k==0)break;else{inttemp;temp=x;x=y%x;y=temp;}}setValue();c=arrayList.get(0);for(intj=1;j0)returnc[0][1];elsereturnyValue-Math.abs(c[0][1])%yValue;}publicint[][]matrixMul(int[][]a,int[][]b)
7、{int[][]c=newint[2][2];for(inti=0;i<2;i++){for(intj=0;j<2;j++){for(intk=0;k<2;k++)c[i][j]+=(a[i][k]*b[k][j]);}}returnc;}二、DES算法1.DES算法及原理DES(TheDataEncryptionStandard)使用一個56位de密鑰以及附加de8位奇偶校驗位,產(chǎn)生最大64位de分組大小。這是一個迭代de分組密碼,其中將加密de文本塊分成兩半。使用子密鑰對其中一半應用循環(huán)功能,然后將輸出與另一半進行“異或”運算;接著交換這兩半,這一過程會繼續(xù)