資源描述:
《現(xiàn)代密碼學(xué)matlab仿射密碼實(shí)驗(yàn)報(bào)告一.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、廣東金融學(xué)院實(shí)驗(yàn)報(bào)告課程名稱:實(shí)驗(yàn)編號(hào)及實(shí)驗(yàn)名稱實(shí)驗(yàn)一仿射密碼的編碼實(shí)踐系別金融數(shù)學(xué)與統(tǒng)計(jì)學(xué)院姓名學(xué)號(hào)班級(jí)實(shí)驗(yàn)地點(diǎn)實(shí)驗(yàn)日期2017年10月11日實(shí)驗(yàn)時(shí)數(shù)2指導(dǎo)教師嚴(yán)建平同組其他成員成績一、實(shí)驗(yàn)?zāi)康募耙笥胢atlab實(shí)現(xiàn)仿射密碼的加密和解密并且完成界面設(shè)計(jì)。二、實(shí)驗(yàn)環(huán)境及相關(guān)情況(包含使用軟件、實(shí)驗(yàn)設(shè)備、主要儀器及材料等)MATLAB7.1,office2010,windows10,內(nèi)存4G硬盤:機(jī)械硬盤500G一、實(shí)驗(yàn)內(nèi)容的詳細(xì)代碼、清單、步驟及流程打開matlab的GUI界面設(shè)計(jì)窗口,進(jìn)行仿射密碼的加密和解密的窗口設(shè)計(jì),這部分比較簡單,就不詳細(xì)展開說了
2、,在這部分功能的實(shí)現(xiàn)主要是對(duì)功能控件進(jìn)行拖拉,matlab提供了比較簡易的工具,能是我們簡單地設(shè)計(jì)出軟件窗口。接下來是功能的實(shí)驗(yàn),先是加密功能的實(shí)現(xiàn),思路過程先將要加密的字母,轉(zhuǎn)化為ASCII碼,然后減去97,得到對(duì)于的數(shù)字。然后對(duì)數(shù)字進(jìn)行加密,用e(x)=ax+b(mod26)公式去求出密文的數(shù)字,最后將加密后的數(shù)字加97,再轉(zhuǎn)化為字母,得到密文。詳細(xì)代碼如下:functionencode_Callback(hObject,eventdata,handles)%hObjecthandletoencode(seeGCBO)%eventdatareserve
3、d-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)plaintext=get(handles.plaintext,'String');factor1=get(handles.parameter1,'String');factor2=get(handles.parameter2,'String');%將參數(shù)的字符串轉(zhuǎn)化為數(shù)值factor1=str2num(factor1);factor2=str2num(factor2);plaint
4、extASCII=double(plaintext);temCode=plaintextASCII-97;temCode=mod(temCode*factor1+factor2,26);ciphertextStr=char(temCode+97);set(handles.ciphertext,'String',ciphertextStr)解密功能實(shí)現(xiàn)思路跟加密差不多,而且在代碼注釋中也已經(jīng)表達(dá)清楚,在這里不詳細(xì)嗎描述了。%解密函數(shù)functiondecode_Callback(hObject,eventdata,handles)%獲取密文ciphertex
5、t=get(handles.ciphertext,'String');%獲取兩個(gè)參數(shù)factor1=get(handles.parameter1,'String');factor2=get(handles.parameter2,'String');%將參數(shù)的字符串轉(zhuǎn)化為數(shù)值factor1=str2num(factor1);factor2=str2num(factor2);%定義所有與26互素的乘法逆元pNum=[1357911151719212325];UnPNum=[1921153197231151725];%得到參數(shù)的indexfactor1_inde
6、x=find(pNum==factor1);%得到參數(shù)1的逆元Unfactor1=UnPNum(factor1_index)%將密文轉(zhuǎn)化為ascii碼ciphertextASCII=double(ciphertext);temCode=ciphertextASCII-97;%解密temCode=mod(Unfactor1*(temCode-factor2),26);%將解密后的ascii碼轉(zhuǎn)化為明文plaintextStr=char(temCode+97);%將明文設(shè)置到明文區(qū)域set(handles.plaintext,'String',plaintex
7、tStr)四.實(shí)驗(yàn)結(jié)果(包括程序、圖表、結(jié)論陳述、數(shù)據(jù)記錄及分析等)實(shí)驗(yàn)結(jié)果如下:對(duì)明文“plaintext”,參數(shù)1為11,參數(shù)2為6.進(jìn)行加密,得到“pxgqthyzh”圖1對(duì)明文plaintext進(jìn)行加密的結(jié)果然后先清空明文區(qū),對(duì)密文“pxgqthyzh”參數(shù)1為11,參數(shù)2為6,進(jìn)行解密,可以發(fā)現(xiàn)得到明文“plaintext”,如加密的明文一樣。證明該程序運(yùn)行正確。五.實(shí)驗(yàn)總結(jié)(包括對(duì)本實(shí)驗(yàn)的所有問題的回答、實(shí)驗(yàn)過程中發(fā)現(xiàn)的問題以及你的改進(jìn)辦法)在這次實(shí)驗(yàn)中,我深刻理解到了仿射密碼的加密解密原理,同時(shí)對(duì)于MATLAB來設(shè)計(jì)軟件界面更加熟練,也對(duì)于現(xiàn)
8、代密碼學(xué)這門科目有了初步的認(rèn)識(shí)和了解。總算能夠自己動(dòng)手去實(shí)現(xiàn)加密解