資源描述:
《現(xiàn)代密碼學matlab仿射密碼實驗報告一.doc》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、廣東金融學院實驗報告課程名稱:實驗編號及實驗名稱實驗一仿射密碼的編碼實踐系別金融數(shù)學與統(tǒng)計學院姓名學號班級實驗地點實驗日期2017年10月11日實驗時數(shù)2指導教師嚴建平同組其他成員成績一、實驗目的及要求用matlab實現(xiàn)仿射密碼的加密和解密并且完成界面設計。二、實驗環(huán)境及相關情況(包含使用軟件、實驗設備、主要儀器及材料等)MATLAB7.1,office2010,windows10,內(nèi)存4G硬盤:機械硬盤500G一、實驗內(nèi)容的詳細代碼、清單、步驟及流程打開matlab的GUI界面設計窗口,進行仿射密碼的加密和解密的窗口設計,這部分比較簡單,就不詳細展開說了
2、,在這部分功能的實現(xiàn)主要是對功能控件進行拖拉,matlab提供了比較簡易的工具,能是我們簡單地設計出軟件窗口。接下來是功能的實驗,先是加密功能的實現(xiàn),思路過程先將要加密的字母,轉(zhuǎn)化為ASCII碼,然后減去97,得到對于的數(shù)字。然后對數(shù)字進行加密,用e(x)=ax+b(mod26)公式去求出密文的數(shù)字,最后將加密后的數(shù)字加97,再轉(zhuǎn)化為字母,得到密文。詳細代碼如下: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)解密功能實現(xiàn)思路跟加密差不多,而且在代碼注釋中也已經(jīng)表達清楚,在這里不詳細嗎描述了。%解密函數(shù)functiondecode_Callback(hObject,eventdata,handles)%獲取密文ciphertex
5、t=get(handles.ciphertext,'String');%獲取兩個參數(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);%將明文設置到明文區(qū)域set(handles.plaintext,'String',plaintex
7、tStr)四.實驗結(jié)果(包括程序、圖表、結(jié)論陳述、數(shù)據(jù)記錄及分析等)實驗結(jié)果如下:對明文“plaintext”,參數(shù)1為11,參數(shù)2為6.進行加密,得到“pxgqthyzh”圖1對明文plaintext進行加密的結(jié)果然后先清空明文區(qū),對密文“pxgqthyzh”參數(shù)1為11,參數(shù)2為6,進行解密,可以發(fā)現(xiàn)得到明文“plaintext”,如加密的明文一樣。證明該程序運行正確。五.實驗總結(jié)(包括對本實驗的所有問題的回答、實驗過程中發(fā)現(xiàn)的問題以及你的改進辦法)在這次實驗中,我深刻理解到了仿射密碼的加密解密原理,同時對于MATLAB來設計軟件界面更加熟練,也對于現(xiàn)
8、代密碼學這門科目有了初步的認識和了解??偹隳軌蜃约簞邮秩崿F(xiàn)加密解