![實現(xiàn)數(shù)字簽名的RSA算法的設計與實現(xiàn)樣本_第1頁](http://file4.renrendoc.com/view11/M00/30/3D/wKhkGWX6eQqAFLKKAACJmC_vsXM200.jpg)
![實現(xiàn)數(shù)字簽名的RSA算法的設計與實現(xiàn)樣本_第2頁](http://file4.renrendoc.com/view11/M00/30/3D/wKhkGWX6eQqAFLKKAACJmC_vsXM2002.jpg)
![實現(xiàn)數(shù)字簽名的RSA算法的設計與實現(xiàn)樣本_第3頁](http://file4.renrendoc.com/view11/M00/30/3D/wKhkGWX6eQqAFLKKAACJmC_vsXM2003.jpg)
![實現(xiàn)數(shù)字簽名的RSA算法的設計與實現(xiàn)樣本_第4頁](http://file4.renrendoc.com/view11/M00/30/3D/wKhkGWX6eQqAFLKKAACJmC_vsXM2004.jpg)
![實現(xiàn)數(shù)字簽名的RSA算法的設計與實現(xiàn)樣本_第5頁](http://file4.renrendoc.com/view11/M00/30/3D/wKhkGWX6eQqAFLKKAACJmC_vsXM2005.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程實踐報告書課程名稱:密碼學與網(wǎng)絡安全課程實踐題目:實現(xiàn)數(shù)字簽名RSA算法設計與實現(xiàn)學生姓名:專業(yè):班別:學號:指引教師:日期:年6月18日實現(xiàn)數(shù)字簽名RSA算法設計與實現(xiàn)摘要隨著計算機網(wǎng)絡和信息技術發(fā)展,信息安全在各領域發(fā)揮著越來越重要作用,其中密碼學已成為信息安全技術核心,本文重要簡介了信息加密技術應用。RSA算法是當前公認在理論和實際應用中最為成熟和完善一種公鑰密碼體制,它是第一種既能用于數(shù)據(jù)加密也能用于數(shù)字簽名算法,是公鑰密碼體制代表。數(shù)字簽名是起到身份認證、核準數(shù)據(jù)完整性一種信息安全技術。它通過認證技術來辨認真?zhèn)?。RSA數(shù)字簽名體制使用是RSA公開密鑰密碼算法進行數(shù)字簽名。本文重要內容涉及:第一,對RSA算法進行系統(tǒng)簡介;第二,簡介RSA數(shù)字簽名某些基本概念和數(shù)字簽名理論實現(xiàn)過程;第三詳述RSA數(shù)字簽名設計與實現(xiàn),重要實現(xiàn)模塊涉及RSA密鑰產(chǎn)生(一對公鑰和私鑰),RSA加密算法和解密算法實現(xiàn),;第四,對該系統(tǒng)進行了整體測試和分析改進。核心字:RSA算法;加密;解密;RSA數(shù)字簽名目錄284451引言 3151161.1課題研究背景 342541.2課題研究意義 3241882RSA算法和RSA數(shù)字簽名算法概念設計 3228082.1RSA算法概念和原理 332812.1.1RSA算法簡介 3221252.1.2RSA算法實現(xiàn)原理 374062.2RSA數(shù)字簽名基本概念和RSA數(shù)字簽名算法實現(xiàn)原理 4108432.2.1RSA數(shù)字簽名基本概念 4159942.2.2RSA數(shù)字簽名算法實現(xiàn)原理 5285063RSA數(shù)字簽名邏輯設計與實現(xiàn) 6280793.1RSA數(shù)字簽名總體設計 6301463.1.1RSA數(shù)字簽名所需實現(xiàn)功能 6293173.1.2總體規(guī)定和設計 688913.2各某些設計實現(xiàn) 7118493.2.1密鑰產(chǎn)生實現(xiàn) 7184333.2.2產(chǎn)生消息摘要設計實現(xiàn) 10212193.2.3數(shù)字簽名設計實現(xiàn) 12170353.2.4驗證數(shù)字簽名設計與實現(xiàn) 15146823.2.5RSA數(shù)字簽名運營成果 18244594軟件整體測試和分析改進 18310544.1軟件整體測試 18170044.2性能分析與改進設想 1912684開發(fā)體會 197091參照文獻 201引言1.1課題研究背景隨著電子信息技術迅速發(fā)展,人類已步入信息社會。但是由于整個社會形成了一種巨大計算機網(wǎng)絡,任何一種計算機網(wǎng)絡浮現(xiàn)安全問題,都會影響整個國家網(wǎng)絡安全,因此信息安全、計算機網(wǎng)絡安全問題已引起了人類高度注重。網(wǎng)絡安全辦法應是能全方位地針對各種不同威脅和脆弱性,這樣才干保證網(wǎng)絡信息保密性、完整性和可用性。當代密碼學已成為信息安全技術核心,密碼學是以研究通信安全保密學科,即研究對傳播信息采用何種秘密變換以防止第三者對信息竊取。RSA公鑰加密算法是第一種既能用于數(shù)據(jù)加密也能用于數(shù)字簽名算法。它易于理解和操作,也十分流行。隨著越來越多商業(yè)應用和原則化工作,RSA已經(jīng)成為最具代表性公鑰加密技術?,F(xiàn)今,網(wǎng)上交易加密連接、網(wǎng)上銀行身份驗證、各種信用卡使用數(shù)字證書、智能移動電話和存儲卡驗證功能芯片等,大多數(shù)使用RSA技術。1.2課題研究意義隨著電子商務發(fā)展,網(wǎng)絡上資金電子互換日益頻繁,如何防止信息偽造和欺騙成為非常重要問題。當前關于數(shù)字簽名研究重要集中點是基于公鑰密碼體制數(shù)字簽名。手寫簽名每一項業(yè)務都是數(shù)字簽名潛在用場。數(shù)字簽名可以提供數(shù)據(jù)完整性、真實性和不可否認性。數(shù)字簽名技術在身份辨認和認證、數(shù)據(jù)完整性、抵賴等方面具備其他技術無法代替作用,它在軍事、電子商務和電子政務等領域有著極廣泛應用。而在公鑰體制中,RSA是一種較為完善公鑰密碼算法,不但可以同步用于加密和數(shù)字簽名,并且易于理解和操作,是被廣泛研究公鑰密碼算法。因而,基于RSA數(shù)字簽名具備較強研究性和實際應用意義。2RSA算法和RSA數(shù)字簽名算法概念設計2.1RSA算法概念和原理2.1.1RSA算法簡介RSA算法是一種公鑰密碼算法,實現(xiàn)RSA算法涉及生成RSA密鑰,加密和解密數(shù)據(jù)。RSA算法是第一種能同步用于加密和數(shù)字簽名算法,也易于理解和操作。RSA是被研究得最廣泛公鑰算法。RSA缺陷重要有:A)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n至少也要600bits。2.1.2RSA算法實現(xiàn)原理1)隨機選取兩個不同素數(shù)p和q,它們寬度是密鑰寬度一半。2)計算出p和q乘積n。3)在2和Φ(n)之間隨機選取一種數(shù)e,e必要和Φ(n)互素,整數(shù)e用做加密密鑰(其中Φ(n)=(p-1)*(q-1))。4)從公式ed≡1modΦ(n)中求出解密密鑰d。5)得公鑰(e,n),私鑰(d,n)。6)公開公鑰,但不公開私鑰。7)將明文P(假設P是一種不大于n整數(shù))加密為密文C,計算辦法為:C=P^emodn;8)將密文C解密為明文P,計算辦法為:P=C^dmodn;然而只依照n和e(不是p和q)要計算出d是不也許。因而,任何人都可對明文進行加密,但只有授權顧客(懂得d)才可對密文解密。2.2RSA數(shù)字簽名基本概念和RSA數(shù)字簽名算法實現(xiàn)原理2.2.1RSA數(shù)字簽名基本概念RSA數(shù)字簽名體制使用了RSA公開密鑰密碼算法進行數(shù)字簽名,鑒于RSA算法在實踐中已經(jīng)被證明了安全性,RSA數(shù)字簽名體制在許多安全原則中得以廣泛應用。ISO/IEC9796和ANSIX9.30-199X以及美國聯(lián)邦信息解決原則FIPS186-2已經(jīng)將RSA作為推薦數(shù)字簽名原則算法之一。RSA數(shù)字簽名算法,涉及簽名算法和驗證簽名算法。它是運用RSA算法加密和解密算法原理進行一種數(shù)字簽名,事實上是通過一種哈希函數(shù)來實現(xiàn)(本設計是通過MD5算法)產(chǎn)生消息摘要MD來實現(xiàn)所需加密對象。數(shù)字簽名特點是它代表了消息特性,消息如果發(fā)生變化,數(shù)字簽名值也將發(fā)生變化,不同消息將得到不同數(shù)字簽名。安全數(shù)字簽名使接受方可以得到保證:消息的確來自發(fā)送方。由于簽名私鑰只有發(fā)送方自己保存,她人無法做同樣數(shù)字簽名,如果第三方冒充發(fā)送方發(fā)出一種消息,而接受方在對數(shù)字簽名進行解密時使用是發(fā)送方公開密鑰,只要第三方不懂得發(fā)送方私有密鑰,加密出來數(shù)字簽名和通過計算數(shù)字簽名必然是不相似,這就提供了一種安全確認發(fā)送方身份辦法,即數(shù)字簽名真實性得到了保證。數(shù)字簽名類似手書簽名,它具備如下性質:1)可以驗證簽名產(chǎn)生者身份,以及產(chǎn)生簽名日期和時間;2)能用于證明被簽消息內容;3)數(shù)字簽名可由第三方驗證,從而可以解決通信雙方爭議。為了滿足數(shù)字簽名這些規(guī)定,例如,通信雙方在發(fā)送消息時,既要防止接受方或其她第三方偽造,又要防止發(fā)送方因對自己不利而否認,也就是說,為了保證數(shù)字簽名真實性。數(shù)字簽名原理是:(發(fā)送方和接受方依照規(guī)定各自產(chǎn)生自己一對公鑰和私鑰)1)被發(fā)送文獻采用某種算法對原始消息進行運算,得到一種固定長度數(shù)字串,稱為消息摘要(MD),不同消息得到消息摘要各異,但是對相似消息它消息摘要卻是唯一;2)發(fā)送方生成消息消息摘要,用自己私鑰對摘要進行加密來形成發(fā)送方數(shù)字簽名;3)這個數(shù)字簽名將作為消息附件和消息一同用接受方公鑰進行加密,將加密后密文一起發(fā)送給接受方;4)接受方一方面把接受到密文用自己私鑰解密,得到原始消息和數(shù)字簽名,再用發(fā)送方公鑰解密數(shù)字簽名,隨后用同樣算法計算出消息摘要;5)如果計算出來消息摘要和發(fā)送方發(fā)送給她消息摘要(通過解密數(shù)字簽名得到)是相似,這樣接受方就能確認數(shù)字簽名的確是發(fā)送方,否則就以為收到消息是偽造或是半途被篡改。數(shù)字簽名原理圖如2-1所示ABEDEDEDED用A私鑰加密用B公鑰用B私鑰用A公鑰解密數(shù)字簽名加密解密核算簽名圖2-1數(shù)字簽名原理2.2.2RSA數(shù)字簽名算法實現(xiàn)原理RSA數(shù)字簽名算法分為如下兩個環(huán)節(jié):1)簽名算法(涉及兩步:消息摘要計算,RSA加密)(1)消息摘要MD計算:消息在簽名前一方面通過MD5計算,生成128位消息摘要;MD5函數(shù)是一種單向散列函數(shù),它將任意長度消息壓縮成128位消息摘要。應用MD5單向性(即給定散列值,計算消息很難)和抗碰撞性(即給定消息M,要找到另一消息M’并滿足兩者散列值很難),可以實現(xiàn)信息完整性檢查。此外該函數(shù)設計不基于任何假設和密碼體制而直接構造,執(zhí)行速度快,是一種被廣泛承認單向散列算法。(2)對MD作RSA加密算法:采用簽名者私鑰加密消息摘要,得到加密后字符串即數(shù)字簽名;2)驗證簽名算法(RSA解密、對消息摘要計算和比較)驗證簽名算法涉及兩步:RSA解密得簽名者消息摘要,驗證者對原消息計算摘要,比較兩個消息摘要。驗證簽名過程輸入為消息,簽名者公鑰,簽名;輸出為驗證成果,即與否是對的簽名。(1)RSA解密:簽名實際是加密消息摘要,用以上所述RSA解密辦法采用簽名者公鑰對這個加密消息摘要解密,解密成果應為128位消息摘要。(2)消息摘要計算和比較:驗證者對消息用MD5算法重新計算,得到驗證者自己消息摘要。驗證者比較解密得到消息摘要和自己消息摘要,如果兩者相似,則驗證成功,可以確認消息完整性及簽名的確為簽名者;否則,驗證失敗,確認簽名被冒充或是被篡改。3RSA數(shù)字簽名邏輯設計與實現(xiàn)3.1RSA數(shù)字簽名總體設計3.1.1RSA數(shù)字簽名所需實現(xiàn)功能在本軟件中需要實現(xiàn)功能有如下幾種:(1)生成RSA密鑰:公鑰ke=(e,n),私鑰kd=(d,n);(2)運用MD5算法計算出消息摘要MD;(3)數(shù)字簽名實現(xiàn):用私鑰d對消息摘要進行加密計算(RSA算法中加密辦法);(4)驗證數(shù)字簽名:用公鑰e對數(shù)字簽名進行解密計算(RSA算法中解密辦法),得到解密成果與(2)步計算出消息摘要比較,如果兩個消息摘要同樣則簽名成功。3.1.2總體規(guī)定和設計本軟件總體規(guī)定有:1)按規(guī)定生成非對稱密鑰——公鑰和私鑰;2)按任意寫入消息字符串(明文信息)生成所需要消息摘要MD;3)在本設計中用產(chǎn)生私鑰d依照RSA算法加密原理對所生成消息摘要進行加密運算,得到數(shù)字簽名;4)在本設計中用產(chǎn)生公鑰e依照RSA算法解密原理對所加密消息摘要即數(shù)字簽名進行解密運算,得到相應消息摘要(在本設計中標示為解密信息),比較兩個消息摘要,驗證數(shù)字簽名者身份真實與否;5)提示信息完整、操作舒服、圖形界面雅觀。本軟件總體設計都是基于C++開發(fā)環(huán)境,采用是MicrosoftVisualc++6.0運營環(huán)境。3.2各某些設計實現(xiàn)3.2.1密鑰產(chǎn)生實現(xiàn)在密鑰產(chǎn)生某些中起決定性作用是素數(shù)選取,
對隨機數(shù)作素性檢測,若通過則為素數(shù);否則增長一種步長后再做素性檢測,直到找出素數(shù)。素性檢測采用Fermat測試。這個算法理論根據(jù)是費爾馬小定理:如果m是一種素數(shù),且a不是m倍數(shù),那么依照費爾馬小定理有:am-1=1(modm)。實際應用時:am-1=1(modm)am=a(modm)a=am(modm),因而對于整數(shù)m,只需計算am(modm),再將成果與a比較,如果兩者相似,則m為素數(shù)。選用a=2,則a一定不會是任何素數(shù)倍數(shù)。依照所選素數(shù)不同產(chǎn)生不同密鑰。密鑰理論產(chǎn)生模塊流程圖如圖3-1所示:產(chǎn)生任意素數(shù)產(chǎn)生任意素數(shù)p和q計算n=p*q計算ou_la=(p-1)(q-1)選取e作為公鑰計算d作為私鑰圖3-1密鑰產(chǎn)生密鑰產(chǎn)生某些代碼實現(xiàn): CStringstr; //第一步產(chǎn)生任意素數(shù) GeneratePrimeNumbers(); //第二步計算n=p*q m_n=m_Prime1*m_Prime2; //第三步0=(p-1)(q-1) m_Undef=(m_Prime1-1)*(m_Prime2-1); //第四步選取'e' SelectE(); //第五步計算D CalculateD(); //顯示公鑰和私鑰 //(1)公鑰KU={e,n} str.Format("{%d,%d}",m_e,m_n); m_public_key.SetWindowText(str); //(2)私鑰KU={d,n} str.Format("{%d,%d}",m_d,m_n); m_private_key.SetWindowText(str); //選取一種'e'使'e'與m_Undef互素//選取e函數(shù)實現(xiàn)SelectE(){CStringstr;for(floati=2;i<100000;i++) { if(IsRelativePrime((float)m_Undef,(float)i)) { m_e=(long)i; return; } }}//互為素數(shù)函數(shù)實現(xiàn)IsRelativePrime(floatX,floatY){floatR;//輸入:X,Y if(X<Y)//如果X較小則互換兩個值 { X=X+Y; Y=X-Y; X=X-Y; } //在這時X總是比Y大 for(;;) { if(Y==0) break; R=fmod(X,Y); X=Y; Y=R; }if(X!=1) returnfalse; else returntrue;//互素}//計算D函數(shù)實現(xiàn)CalculateD(){ floatd; longd_dash; CStringstr; for(floatk=1;k<100000;k++) { d=(m_Undef*k+1)/m_e; d_dash=(long)((m_Undef*k+1)/m_e); if(d==d_dash) { m_d=d; return; } }}//產(chǎn)生素數(shù)函數(shù)實現(xiàn)GeneratePrimeNumbers(){ CStringstr; UpdateData(TRUE);//通過如下兩個函數(shù)可獲得兩個大素數(shù),但增長了計算復雜性,為了以便,直接給定素數(shù)// m_Prime1=FindPrime(1);// m_Prime2=FindPrime(m_Prime1); m_Prime1=47; m_Prime2=71;}3.2.2產(chǎn)生消息摘要設計實現(xiàn)計算消息摘要理論實現(xiàn)流程圖如圖3-2所示:初始化MD5初始化MD5所需常量計算所需追加長度對原始信息進行補位將輸入提成512位塊循環(huán)解決塊得到消息摘要得到消息摘要圖3-2消息摘要計算流程在以上流程圖中其中循環(huán)解決塊是最重要一步,也是MD5核心算法,在這一步中涉及了:(1)把四個連接變量復制到了四個變量a,b,c,d中,使a=A,b=B,c=C,d=D;其中a,b,c,d組合成128位寄存器,且在實際算法運算中保存中間成果和最后成果;(2)將當前512位塊分解為16個子塊,每個子塊為32位;(3)要循環(huán)四輪,每一輪解決一種塊中16個子塊,四輪第一步進行不同解決,其她相似:每一輪有16個輸入子塊M[0],M[1],…………..M[15],或表達為M[i],其中i為0-15;t是常量數(shù)組,包括64個元素,每個元素為32位,數(shù)組t表達為t[1],t[2],………t[64],或t[k],k為1-64;MD5循環(huán)四輪操作過程用下式表達:a=b+((a+proccessP(b,c,d)+M[i]+T[k])<<<s)(<<<s表達循環(huán)左移s位)產(chǎn)生消息摘要重要代碼如下: inti;intIndex; //初始化MD5所需常量Init(); //計算追加長度Append(WriteMessage.length());//對原始信息進行補位 for(i=0;i<m_AppendByte;i++) { if(i==0)WriteMessage+=(unsignedchar)0x80; elseWriteMessage+=(unsignedchar)0x0; }//將原始信息長度附加在補位后數(shù)據(jù)背面for(i=0;i<8;i++)WriteMessage+=m_MsgLen[i]; //位塊數(shù)組unsignedcharx[64]={0};//循環(huán),將原始信息以64字節(jié)為一組拆分進行解決 for(i=0,Index=-1;i<WriteMessage.length();i++) { x[++Index]=WriteMessage[i]; if(Index==63) { Index=-1;//將64字節(jié)位轉換為16個字節(jié) Transform(x); } }//將寄存器ABCD最后值轉換為16進制返回給顧客 returnToHex(UpperCase);3.2.3數(shù)字簽名設計實現(xiàn)數(shù)字簽名理論實現(xiàn)流程圖如圖3-3所示,數(shù)字簽名,就是通過在數(shù)據(jù)單元上附加數(shù)據(jù),或對數(shù)據(jù)單元進行加密變換,從而使接受者可以確認數(shù)據(jù)來源和完整性。數(shù)字簽名是防止她人對傳播文獻進行破壞,以及擬定發(fā)信人身份手段。數(shù)字簽名中加密算法就是應用RSA加密原理,而它驗證算法則是應用RSA解密原理。開始得到數(shù)字簽名開始得到數(shù)字簽名得到消息摘要MD用私鑰d加密MD結束圖3-3數(shù)字簽名實現(xiàn)流程RSA加密、解密過程都為求一種整數(shù)整多次冪,再取模。如果按其含義直接計算,則中間成果非常大,有也許超過計算機所容許整數(shù)取值范疇。為了減小中間成果和提高加、解密運算中指數(shù)運算有效性,本設計采用了迅速指數(shù)算法。它運算過程為(如果要算a^mmodn):1)將m表達為二進制形式;2)初始化c=0,d=1,c在這里表達指數(shù)某些成果,它終值即為指數(shù)m,d是中間成果,它終值即為所求成果;3)從二進制數(shù)最高位到最低位開始對每一位都用公式1進行運算,得到d為該步成果,公式1:c=2*c;d=fmod(d*d,n);4)若二進制數(shù)是1,則在上面運算后繼續(xù)如下運算:c=c+1;d=fmod(d*a,n);得到成果d才為該步最后成果。數(shù)字簽名重要實現(xiàn)過程代碼如下://消息摘要,8位為一組一種字符一組 charmessage[200];//從文本框中得到消息摘要m_message.GetWindowText(message,200); len=strlen(message); charshowstr[1000]=""; intNO_BITS=32; doublec=0,d=1; charbits[100]; doublen=(double)m_n; unsignedcharch; doubledata;//19; longi,k=NO_BITS; intsizeof_d=sizeof(double);//將十進制數(shù)私鑰d轉換為二進制D_to_B(m_d,32,bits);//得到適當字節(jié) GetOnlyProperBits(bits); k=NO_BITS=strlen(bits)-1; for(intii=0;ii<len;ii++) { //從message中讀取字符放入'data'中 ch=message[ii]; data=(double)ch; //計算((data)^dmodn)迅速指數(shù)算法實現(xiàn) c=0;d=1; for(i=k;i>=0;i--) { c=2*c; d=fmod(d*d,n); if(bits[NO_BITS-i]=='1') { c=c+1; d=fmod(data*d,n); } } //從'd'中讀取字符放入result中 result[ii]=d;//把字符串變?yōu)槭M制數(shù)后連接字符串 strcat(showstr,longtohex(d)); }//結束循環(huán)//顯示成果 m_result.SetWindowText(showstr); }//字符串變?yōu)?6進制數(shù)函數(shù)實現(xiàn)longtohex(longx){charstr[8]; inti=0;//商 inta;//余數(shù) intb; longtt=x; while(tt>=16) { a=tt/16; b=tt%16; switch(b) { case0:str[i]='0';break; case1:str[i]='1';break; case2:str[i]='2';break; case3:str[i]='3';break; case4:str[i]='4';break; case5:str[i]='5';break; case6:str[i]='6';break; case7:str[i]='7';break; case8:str[i]='8';break; case9:str[i]='9';break; case10:str[i]='A';break; case11:str[i]='B';break; case12:str[i]='C';break; case13:str[i]='D';break; case14:str[i]='E';break; case15:str[i]='F';break; }; i++;tt=a; } str[i]='\0'; strrev(str); returnstr;}3.2.4驗證數(shù)字簽名設計與實現(xiàn)得到數(shù)字簽名得到數(shù)字簽名用公鑰e解密數(shù)字簽名得到消息摘要(解密信息)開始結束圖3-4驗證數(shù)字簽名流程驗證數(shù)字簽名對的與成功性,重要是比較得到兩次消息摘要與否同樣,如果驗證方用簽名方公鑰解密得到消息摘要(即是本設計中得到解密信息)和她自己計算得到消息摘要(在本系統(tǒng)中為第一次計算得到消息摘要)是同樣,則證明簽名是對的,沒有被篡改或是冒充,驗證簽名原理則是依照RSA解密算法,詳細理論流程圖如圖3-4所示:(在本設計中簽名和驗證簽名都在同一界面實現(xiàn),不進行文獻雙方傳播)驗證數(shù)字簽名過程時應用解密算法是RSA解密原理,而RSA解密過程也應用了求一種整數(shù)整多次冪,再取模運算。在此也采用了迅速指數(shù)算法,詳細算法過程同RSA加密過程中應用迅速指數(shù)算法是同樣。驗證數(shù)字簽名重要實現(xiàn)過程代碼如下:intNO_BITS; doublec=0,d=1; charbits[100]; doublen=(double)m_n; doubledata;//19; longi,k;intsizeof_d=sizeof(double);//用于存儲解密信息 charmessage[200];//將十進制數(shù)公鑰e轉換為二進制 D_to_B(m_e,32,bits); GetOnlyProperBits(bits); k=NO_BITS=strlen(bits)-1; for(intj=0;j<len;j++) { //從result中讀取字符放入'data'中 data=result[j]; //計算((data)^emodn)迅速指數(shù)算法實現(xiàn) c=0;d=1; for(i=k;i>=0;i--) { c=2*c; d=fmod(d*d,n); if(bits[NO_BITS-i]=='1') { c=c+1; d=fmod(data*d,n); } }//結束循環(huán) //從'd'中讀取字符放入message中 message[j]=d; }//顯示成果 m_mingwen.SetWindowText(message); }3.2.5RSA數(shù)字簽名運營成果圖3-5RSA數(shù)字簽名運營成果在本軟件中得到二個消息摘要:依照寫入消息(明文信息)計算出來消息摘要、解密數(shù)字簽名得到消息摘要(即是本設計中解密信息)。如果兩個消息摘要是同樣則證明RSA數(shù)字簽名者身份真實性,從而實現(xiàn)了RSA數(shù)字簽名。該系統(tǒng)運營成果如圖3-5所示。產(chǎn)生消息摘要和解密得到消息摘要(在此處是解密信息)是完全同樣,則證明了數(shù)字簽名真實性。4軟件整體測試和分析改進4.1軟件整體測試(1)測試密鑰生成:產(chǎn)生密鑰前提是要有兩個素數(shù)生成,密鑰產(chǎn)生依賴于素數(shù)生成,素數(shù)生成不同樣則密鑰也會不相似,在本設計中素數(shù)是47和71,則相相應密鑰是公鑰(3,3337)和私鑰(2147,3337);(2)測試消息摘要MD生成:寫入消息(明文信息)不同樣得到消息摘要就有所區(qū)別,但是在產(chǎn)生消息摘要時所使用計算辦法是同樣即MD5算法,該算法核心是其中四輪循環(huán),如果四輪循環(huán)中一種細節(jié)出了問題則所產(chǎn)生MD便是相差極遠,如若明文信息是dfgfhfhgjk則得到消息摘要A4127B4881D24B01A85696477A07C17C,若明文信息是cvnjj則得到消息摘要是A1E2C15FF4C9F4D407EF33D1AC56C632;(3)測試數(shù)字簽名生成:依照RSA算法加密原理對不同消息摘要MD進行加密運算,得到便是不同數(shù)字簽名DS;若消息摘要MD是A1E2C15FF4C9F4D407EF33D1AC56C63
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit2 My schoolbag (Part C)(說課稿)-2024-2025學年人教PEP版英語四年級上冊
- Unit 1 Life Choices Lesson 3 Your Life Is What You Make It 說課稿-2024-2025學年高中英語北師大版(2019)必修第一冊
- 2025宅基地的買賣合同協(xié)議書
- 2024六年級英語上冊 Unit 3 My weekend plan課時3 Let's try Let's talk說課稿 人教PEP
- 2024-2025學年高中數(shù)學 開學第一周 第一章 集合與函數(shù)概念 1.1.1 集合的含義與表示 第一課時 集合的含義說課稿 新人教A版必修1
- 26手術臺就是陣地 (說課稿)-2024-2025學年三年級上冊語文統(tǒng)編版
- 2025冷庫銷售合同范本
- 影視企業(yè)簽訂業(yè)績承諾協(xié)議的財務風險控制研究
- Unit 1 Let's be friends!(說課稿)-2024-2025學年外研版(三起)(2024)英語三年級上冊
- 水景池維修施工方案
- 2025至2030年中國減肥肽數(shù)據(jù)監(jiān)測研究報告
- 2024內蒙古公務員省直行測、行政執(zhí)法、省考行測考試真題(5套)
- 2025年安徽馬鞍山市兩山綠色生態(tài)環(huán)境建設有限公司招聘筆試參考題庫附帶答案詳解
- 山東省濱州市濱城區(qū)2024-2025學年九年級上學期期末考試化學試題
- 期末試卷:安徽省宣城市2021-2022學年七年級上學期期末歷史試題(解析版)
- 幼兒教師新年規(guī)劃
- 2024年湖南省公務員錄用考試《行測》真題及答案解析
- 2024新版(北京版)三年級英語上冊單詞帶音標
- 第21課 活動課 從考古發(fā)現(xiàn)看中華文明的起源 教學課件
- 部編版《道德與法治》四年級下冊教材解讀與分析文檔
- PP、PVC-風管制作安裝施工作業(yè)指導書
評論
0/150
提交評論