计算机网络rsa算法,计算机网络安全实验新报告--非对称密码算法RSA.doc
計算機網絡安全實驗新報告--非對稱密碼算法RSA
網絡安全實驗報告 學院 網絡工程專業 班 學號 姓名 成績評定_______ 教師簽名 實驗 2 題目 非對稱密碼算法RSA 課程名稱 網絡安全 PAGE
PAGE 10
實驗二 非對稱密碼算法RSA一、實驗目的通過實際編程了解非對稱密碼算法RSA的加密和解密過程,加深對非對稱密碼算法的認識。二、實驗環境運行Windows或Linux操作系統的PC機,具有gcc(Linux)、VC(Windows)等C語言編譯環境。三、實驗內容和步驟1)編寫一個程序,隨機選擇3個較大的數x、e、n,然后計算xe mod n,記錄程序運行時間。實際中應用的素數為512位,n也就為1024位。這樣的大數在計算機上如何表示、如何進行運算,查閱資料給出簡單說明。RSA依賴大數運算,目前主流RSA算法都建立在512位到1024位的大數運算之上,所以我們在現階段首先需要掌握1024位的大數運算原理。大多數的編譯器只能支持到64位的整數運算,即我們在運算中所使用的整數必須小于等于64位,即:0xffffffffffffffff也就是18446744073709551615,這遠遠達不到RSA的需要,于是需要專門建立大數運算庫來解決這一問題。最簡單的辦法是將大數當作字符串進行處理,也就是將大數用10進制字符數組進行表示,然后模擬人們手工進行“豎式計算”的過程編寫其加減乘除函數。但是這樣做效率很低,因為1024位的大數其10進制數字個數就有數百個,對于任何一種運算,都需要在兩個有數百個元素的數組空間上做多重循環,還需要許多額外的空間存放計算的進位退位標志及中間結果。當然其優點是算法符合人們的日常習慣,易于理解。另一種思路是將大數當作一個二進制流進行處理,使用各種移位和邏輯操作來進行加減乘除運算,但是這樣做代碼設計非常復雜,可讀性很低,難以理解也難以調試。(2)計算機在生成一個隨機數時,并不一定就是素數,因此要進行素性檢測。是否有確定的方法判定一個大數是素數,要查閱資料,找出目前實際可行的素數判定法則,并且比較各自的優缺點。所謂素數,是指除了能被1和它本身整除而不能被其他任何數整除的數。根據素數的定義,只需用2到N-1去除N,如果都除不盡則N是素數,結束知其循環。由此得算法1。flay=0,i=2. /*flay為標志,其初值為0,只要有一個數除盡,其值變為1.If n mod i=0 then flay=l else i=i+1/* n mod i是n除以i的余數.If flay=0 and I<=n-1 then(2) else go (4)If flay=0 then write“n是素數。”else write“不是素數”最壞的情形下,即N是素數時,算法1需要執行N-2次除法,時間復雜性太大。假設N桶分解成iXj(i,j是小于N的整數),則必存在一個因子(1<=i<=int(√n)),這樣只需用2到int(√n)去除N即可,于是循環次數可以大減小,由此得出算法2算法2(改進算法)flag=0,i=2if n mod i then flag=1else i=i+1if flag=0 and i<=int(√n) then go(2) else go(4)if flah=0 then write”n是素數”else write “n不是素數“。最壞的情形下,即當N是紗數時1需要執行int(√n)-1次除法。雖然算法2比算法1確是快了不小,但有重復計算,如果用2去除N時若不盡則用2的倍數去除N也除不盡,于是只要2除不盡,2的倍數就不用去除,這樣可以減少除法次數,由此得出算法3(1)for(i=2;int(√n);i++)mark[i]=0/*mark是標記其初值為0,只要它的因子除不盡其值變為1。(2)i=2,flag=0(3)while(flag=0and i<=int(√n) {If mark[i]=0Then { If n mod i=0 Then flag=1 Else S=i+i While s
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的计算机网络rsa算法,计算机网络安全实验新报告--非对称密码算法RSA.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html input 传值 reques
- 下一篇: 18秋学期计算机基础在线作业2,东大18