公開(kāi)密鑰加密算法RSA的Matlab實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
公開(kāi)密鑰加密算法RSA的Matlab實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)
公開(kāi)密鑰加密算法RSA的Matlab實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)
公開(kāi)密鑰加密算法RSA的Matlab實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)
公開(kāi)密鑰加密算法RSA的Matlab實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、公開(kāi)密鑰加密算法rsa的matlab實(shí)現(xiàn) 摘要rsa算法是基于數(shù)論的公開(kāi)密鑰加密算法,它已經(jīng)成為現(xiàn)在最流行的公鑰加密算法和數(shù)字簽名算法之一。其算法的安全性基于數(shù)論中大素?cái)?shù)分解的困難性,所以rsa公鑰密碼體制算法的關(guān)鍵是如何產(chǎn)生大素?cái)?shù)和進(jìn)行大指數(shù)模冪運(yùn)算。本文首先介紹了rsa 公開(kāi)密鑰加密算法的數(shù)學(xué)原理,并介紹了幾種流行的產(chǎn)生大素?cái)?shù)的算法。然后用matlab具體實(shí)現(xiàn)公鑰加密算法rsa的加密和解密,從而實(shí)現(xiàn)了數(shù)據(jù)的安全傳輸。關(guān)鍵詞 rsa算法;加密;素?cái)?shù)the realization of rsa algorithm for public key encryption based on matla

2、b(grade 07,class 3,major electronics and information engineering ,communication engineering dept.,shaanxi university of technology, hanzhong 723003, shaanxi) tutor: abstract :the algorithm is based on the theory of rsa public key encryption algorithm, it has become the most popular public key encryp

3、tion algorithm and digital signature algorithm of one. the safety of the algorithm based on number theory cuhk the difficulty of prime decomposition, so the rsa public key cryptography algorithms is key to how to produce large prime numbers dazhi and transmit power operation. this paper first introd

4、uced the rsa public key encr -yption algorithm of mathematical theory, and introduces several popular produce large prime numbers of the algorithm. then use matlab rsa public key encryption algorithm re -alization of encryption and decryption is realized, and the safety of the data trans -mission.ke

5、y words: rsa algorithm; encryption; prime number 目錄引言11數(shù)據(jù)加密概述21.1基本概念21.2 數(shù)據(jù)加密分類32 matlab工具介紹62.1 matlab語(yǔ)言的主要特點(diǎn)62.2 matlab的程序設(shè)計(jì)622.1 腳本文件和函數(shù)文件622.2 函數(shù)調(diào)用和參數(shù)傳遞822.3 matlab的程序結(jié)構(gòu)和控制流程83 rsa公鑰密碼體制103.1 算法簡(jiǎn)介103.2算法的數(shù)學(xué)基礎(chǔ)103.3 rsa公鑰密碼算法10 3.3.1 算法步驟103.3.2 參數(shù)分析113.3.3 安全性分析123.4 公鑰密碼體制中安全大素?cái)?shù)的生成133.4.1 素?cái)?shù)篩選1

6、33.4.2 素?cái)?shù)檢測(cè)143.5 rsa的matlab實(shí)現(xiàn)163.5.1算法原理163.5.2 運(yùn)行過(guò)程203.5.3結(jié)論分析224 基于rsa的數(shù)字簽名234.1 數(shù)字簽名概述234.2 基于rsa的數(shù)字簽名244.3 rsa數(shù)字簽名方案的不足245 rsa算法的實(shí)際應(yīng)用和發(fā)展255.1 算法的應(yīng)用255.2算法的改進(jìn)26結(jié)論27致謝28參考文獻(xiàn)29附錄30附錄a:英文資料及翻譯30附錄b:源程序40引言隨著internet用戶的激增,世界正步入網(wǎng)絡(luò)經(jīng)濟(jì)的新時(shí)代。如網(wǎng)上購(gòu)物、網(wǎng)上銀行、網(wǎng)上證券等。然而,有一些人利用利用他們所掌握的技術(shù)非法侵入他人的計(jì)算機(jī)系統(tǒng),竊取、篡改、破壞一些重要的數(shù)據(jù),

7、給社會(huì)造成巨大的損失。密碼技術(shù)的發(fā)展與應(yīng)用,對(duì)解決信息交換的安全問(wèn)題,保障數(shù)據(jù)信息的安全,起著不可忽視的作用。所謂密碼技術(shù),就是針對(duì)信息進(jìn)行重新編碼,從而達(dá)到隱藏信息的內(nèi)容,使非法用戶無(wú)法獲取信息真實(shí)內(nèi)容的一種手段。目前在網(wǎng)絡(luò)中,一般采用兩種密碼體制:對(duì)稱密鑰體制和非對(duì)稱密鑰體制。對(duì)稱密鑰體制中的加密密鑰和解秘密鑰是相同的,所以又稱密秘密鑰密碼體制。對(duì)稱密鑰算法運(yùn)算效率高、使用方便、加密效率高,在處理大量數(shù)據(jù)時(shí)被廣泛使用,但其關(guān)鍵是要保證密鑰的安全,為安全起見(jiàn),密鑰要定期改變,所以,對(duì)稱密鑰就存在一個(gè)如何安全管理密鑰的問(wèn)題。與對(duì)稱密鑰體制相對(duì)應(yīng)的非對(duì)稱密鑰體制又稱為公開(kāi)密鑰密碼體制,它是在19

8、76 年由diffe 和hellman 發(fā)表的密碼學(xué)的新方向一文中提出的,從此打破了長(zhǎng)期使用單密鑰體制的束縛。自此提出公約密碼思想以后,涌現(xiàn)出很多的公約密鑰算法體系,經(jīng)過(guò)20多年的實(shí)踐檢驗(yàn),公約系統(tǒng)的應(yīng)用技術(shù)日趨完善,應(yīng)用領(lǐng)域日趨廣泛。公開(kāi)密鑰密碼體制,加密密鑰和解秘密鑰是分開(kāi)采用一對(duì)不同的密鑰進(jìn)行的,分別存在一個(gè)公鑰和私鑰,公鑰公開(kāi),私鑰保密,并且知道其中一個(gè)時(shí)并不能從中推出另一個(gè)。其典型的算法有背包密碼、rsa等。 其中rsa公約算法系統(tǒng)因?yàn)槠淇煽堪踩裕子趯?shí)現(xiàn)性,更是受大家的認(rèn)可和歡迎。rsa加密算法的最大優(yōu)點(diǎn)就是不需要對(duì)密鑰通信進(jìn)行保密,所需傳輸?shù)闹挥泄_(kāi)密鑰,這樣就省去了一條開(kāi)銷很

9、大的密鑰傳輸信道。其保密性強(qiáng),密鑰管理方便,并且具有數(shù)字簽名、認(rèn)證和簽別等多種功能,特別適合于現(xiàn)代保密通信的需要。大多數(shù)使用公鑰密碼進(jìn)行加密和數(shù)字簽名的產(chǎn)品和標(biāo)準(zhǔn)使用的都是rsa算法。rsa的安全性是基于大數(shù)因子分解的困難性。目前一般認(rèn)為rsa需要1024位以上的字長(zhǎng)才有安全保障。由于rsa所采用的模冪運(yùn)算耗時(shí)太多,因此它通常只能用于加密少量數(shù)據(jù)或者加密密鑰。需要注意的是,rsa的安全性只是一種計(jì)算安全性,絕對(duì)不是無(wú)條件的安全性,這是由它的理論基礎(chǔ)決定的。所以,在實(shí)現(xiàn)rsa算法的過(guò)程中,每一步都應(yīng)該盡量從安全性方面考慮。本文就rsa算法以及如何用matlab語(yǔ)言實(shí)現(xiàn)給于了詳細(xì)的分析。1 數(shù)據(jù)加

10、密概述 密碼學(xué)是一門(mén)古老而深?yuàn)W的學(xué)科,它對(duì)一般人來(lái)說(shuō)是陌生的,因?yàn)殚L(zhǎng)期以來(lái),它只在很少的范圍內(nèi),如軍事、外交、情報(bào)等部門(mén)使用。計(jì)算機(jī)密碼學(xué)是研究計(jì)算機(jī)信息加密、解密及其變換的科學(xué),是數(shù)學(xué)和計(jì)算機(jī)的交叉學(xué)科,也是一門(mén)新興的學(xué)科。隨著計(jì)算機(jī)網(wǎng)絡(luò)和計(jì)算機(jī)通訊技術(shù)的發(fā)展,計(jì)算機(jī)密碼學(xué)得到前所未有的重視并迅速普及和發(fā)展起來(lái)。在國(guó)外,它已成為計(jì)算機(jī)安全主要的研究方向,也是計(jì)算機(jī)安全課程教學(xué)中的主要內(nèi)容。密碼是實(shí)現(xiàn)秘密通訊的主要手段,是隱蔽語(yǔ)言、文字、圖象的特種符號(hào)。凡是用特種符號(hào)按照通訊雙方約定的方法把電文的原形隱蔽起來(lái),不為第三者所識(shí)別的通訊方式稱為密碼通訊。在計(jì)算機(jī)通訊中,采用密碼技術(shù)將信息隱蔽起來(lái),

11、再將隱蔽后的信息傳輸出去,使信息在傳輸過(guò)程中即使被竊取或載獲,竊取者也不能了解信息的內(nèi)容,從而保證信息傳輸?shù)陌踩?任何一個(gè)加密系統(tǒng)至少包括下面四個(gè)組成部分: (1)未加密的報(bào)文,也稱明文。 (2)加密后的報(bào)文,也稱密文。 (3)加密解密設(shè)備或算法。 (4)加密解密的密鑰。 發(fā)送方用加密密鑰,通過(guò)加密設(shè)備或算法,將信息加密后發(fā)送出去。接收方在收到密文后,用解密密鑰將密文解密,恢復(fù)為明文。如果傳輸中有人竊取,他只能得到無(wú)法理解的密文,從而對(duì)信息起到保密作用。1.1 基本概念數(shù)據(jù)加密技術(shù)就是指將一個(gè)信息或明文經(jīng)過(guò)加密鑰匙及加密函數(shù)轉(zhuǎn)換,變成無(wú)意義的密文,而接收方則將此密文經(jīng)過(guò)解密函數(shù).解密鑰匙還原

12、成明文。加密技術(shù)是網(wǎng)絡(luò)安全技術(shù)的基石。明文,即加密前的真實(shí)的數(shù)據(jù)或信息,它是可以被外界所識(shí)別,它指代的含義比較廣泛,比如用戶a要將一份文件發(fā)送給用戶b,那么我們就將用戶a手里所拿的那份文件稱之為明文。密文,就是對(duì)信息經(jīng)過(guò)一定的處理,使它變成無(wú)意義的亂碼,非指定用戶無(wú)法對(duì)它進(jìn)行識(shí)別,例如a使用密鑰k加密消息并將其發(fā)送給b,b收到加密的消息后,使用密鑰k對(duì)其解密以恢復(fù)原始消息,那么在這一過(guò)程當(dāng)中a在途中發(fā)送給b的東西我們就叫它密文,因?yàn)檫@個(gè)文件除b外,其他人得到它也沒(méi)有任何意義,這就保證了信息傳送的保密性。完成加密和解密的算法成為為密碼體制。人們一方面要把自己的信號(hào)隱蔽起來(lái),另一方面則想把別人的隱

13、蔽信息挖掘出來(lái),于是就產(chǎn)生了密碼分析的逆科學(xué)密碼分析。密碼分析研究的問(wèn)題是如何把密文轉(zhuǎn)換成明文。把密文轉(zhuǎn)換成明文的過(guò)程稱為破譯。破譯也是進(jìn)行函數(shù)變換,變換過(guò)程中使用的參數(shù)也叫密鑰。 一般地,如果求解一個(gè)問(wèn)題需要一定量的計(jì)算,但環(huán)境所能提供的實(shí)際資源卻無(wú)法實(shí)現(xiàn),則這種問(wèn)題是計(jì)算上不可能的。如果一個(gè)密碼體制的破譯是計(jì)算上不可能的。則稱該密碼體制是計(jì)算上安全的。密碼體制必須滿足三個(gè)基本要求:(1)對(duì)所有的密鑰、加密和解密都必須迅速有效;(2)體制必須容易使用;(3)體制的安全性必須只依賴于密鑰的保密性。密碼體制要實(shí)現(xiàn)的功能可分為保密性和真實(shí)性兩種。保密性要求密碼分析員無(wú)法從截獲的密文中求出明文。一般

14、情況下一個(gè)密碼體制的保密性包括兩項(xiàng)要求:(1)即使截獲了一段密文c,甚至知道了與它對(duì)應(yīng)的明文m,密碼分析要從系統(tǒng)中求出解密變換,仍然是計(jì)算上不可行的。(2)密碼分析員要由截獲的密文c中系統(tǒng)的求出明文m是計(jì)算上不可能的。數(shù)據(jù)的真實(shí)性要求密碼分析員無(wú)法用虛假的密文代替真是密文而不被察覺(jué),它也包括兩個(gè)要求:(1)對(duì)于給定的c,即使密碼分析員知道了對(duì)應(yīng)于它的明文m,要系統(tǒng)的求出加密變換仍然是計(jì)算上不可能的。(2)密碼分析員要系統(tǒng)地找到密文,使其是明文空間上有意義的明文,這在計(jì)算上是不可能的。1.2 數(shù)據(jù)加密分類專用密鑰:又稱為對(duì)稱密鑰或單密鑰,加密和解密時(shí)使用同一個(gè)密鑰,即同一個(gè)算法。如des和mit

15、的kerberos算法。單密鑰是最簡(jiǎn)單方式,通信雙方必須交換彼此密鑰,當(dāng)需給對(duì)方發(fā)信息時(shí),用自己的加密密鑰進(jìn)行加密,而在接收方收到數(shù)據(jù)后,用對(duì)方所給的密鑰進(jìn)行解密。當(dāng)一個(gè)文本要加密傳送時(shí),該文本用密鑰加密構(gòu)成密文,密文在信道上傳送,收到密文后用同一個(gè)密鑰將密文解出來(lái),形成普通文體供閱讀。在對(duì)稱密鑰中,密鑰的管理極為重要,一旦密鑰丟失,密文將無(wú)密可保。這種方式在與多方通信時(shí)因?yàn)樾枰4婧芏嗝荑€而變得很復(fù)雜,而且密鑰本身的安全就是一個(gè)問(wèn)題。公開(kāi)密鑰:又稱非對(duì)稱密鑰,加密和解密時(shí)使用不同的密鑰,即不同的算法,雖然兩者之間存在一定的關(guān)系,但不可能輕易地從一個(gè)推導(dǎo)出另一個(gè)。有一把公用的加密密鑰,有多把解

16、密密鑰,如rsa算法。 非對(duì)稱密鑰由于兩個(gè)密鑰(加密密鑰和解密密鑰)各不相同,因而可以將一個(gè)密鑰公開(kāi),而將另一個(gè)密鑰保密,同樣可以起到加密的作用。 在這種編碼過(guò)程中,一個(gè)密碼用來(lái)加密消息,而另一個(gè)密碼用來(lái)解密消息。在兩個(gè)密鑰中有一種關(guān)系,通常是數(shù)學(xué)關(guān)系。公鑰和私鑰都是一組十分長(zhǎng)的、數(shù)字上相關(guān)的素?cái)?shù)(是另一個(gè)大數(shù)字的因數(shù))。有一個(gè)密鑰不足以翻譯出消息,因?yàn)橛靡粋€(gè)密鑰加密的消息只能用另一個(gè)密鑰才能解密。每個(gè)用戶可以得到唯一的一對(duì)密鑰,一個(gè)是公開(kāi)的,另一個(gè)是保密的。公共密鑰保存在公共區(qū)域,可在用戶中傳遞,甚至可印在報(bào)紙上面。而私鑰必須存放在安全保密的地方。任何人都可以有你的公鑰,但是只有你一個(gè)人能有

17、你的私鑰。它的工作過(guò)程是:“你要我聽(tīng)你的嗎?除非你用我的公鑰加密該消息,我就可以聽(tīng)你的,因?yàn)槲抑罌](méi)有別人在偷聽(tīng)。只有我的私鑰(其他人沒(méi)有)才能解密該消息,所以我知道沒(méi)有人能讀到這個(gè)消息。我不必?fù)?dān)心大家都有我的公鑰,因?yàn)樗荒苡脕?lái)解密該消息?!?公鑰加密體制具有以下優(yōu)點(diǎn):(1) 密鑰分配簡(jiǎn)單。(2) 密鑰的保存量少。(3) 可以滿足互不相識(shí)的人之間進(jìn)行私人談話時(shí)的保密性要求。(4) 可以完成數(shù)字簽名和數(shù)字鑒別。密碼分析用戶b解密加密用戶a 明文m 密文c=e(m,) m=d(c,) 私鑰空間公鑰空間 (密鑰本) 圖1.1 公鑰密碼體制示意圖對(duì)稱密鑰:對(duì)稱密鑰是最古老的,一般說(shuō)“密電碼”采用的就

18、是對(duì)稱密鑰。由于對(duì)稱密鑰運(yùn)算量小、速度快、安全強(qiáng)度高,因而目前仍廣泛被采用。 des是一種數(shù)據(jù)分組的加密算法,它將數(shù)據(jù)分成長(zhǎng)度為64位的數(shù)據(jù)塊,其中8位用作奇偶校驗(yàn),剩余的56位作為密碼的長(zhǎng)度。第一步將原文進(jìn)行置換,得到64位的雜亂無(wú)章的數(shù)據(jù)組;第二步將其分成均等兩段;第三步用加密函數(shù)進(jìn)行變換,并在給定的密鑰參數(shù)條件下,進(jìn)行多次迭代而得到加密密文。 非對(duì)稱加密技術(shù):數(shù)字簽名一般采用非對(duì)稱加密技術(shù)(如rsa),通過(guò)對(duì)整個(gè)明文進(jìn)行某種變換,得到一個(gè)值,作為核實(shí)簽名。接收者使用發(fā)送者的公開(kāi)密鑰對(duì)簽名進(jìn)行解密運(yùn)算,如其結(jié)果為明文,則簽名有效,證明對(duì)方的身份是真實(shí)的。當(dāng)然,簽名也可以采用多種方式,例如,

19、將簽名附在明文之后。數(shù)字簽名普遍用于銀行、電子貿(mào)易等。 數(shù)字簽名:數(shù)字簽名不同于手寫(xiě)簽字,數(shù)字簽名隨文本的變化而變化,手寫(xiě)簽字反映某個(gè)人個(gè)性特征,是不變的;數(shù)字簽名與文本信息是不可分割的,而手寫(xiě)簽字是附加在文本之后的,與文本信息是分離的。 值得注意的是,能否切實(shí)有效地發(fā)揮加密機(jī)制的作用,關(guān)鍵的問(wèn)題在于密鑰的管理,包括密鑰的生存、分發(fā)、安裝、保管、使用以及作廢全過(guò)程。2 matlab工具介紹 2.1 matlab語(yǔ)言的主要特點(diǎn)(1)具有豐富的數(shù)學(xué)功能。 包括矩陣各種運(yùn)算。如:正交變換、三角分解、特征值、常見(jiàn)的特殊矩陣等。 包括各種特殊函數(shù)。如:貝塞爾函數(shù)、勒讓德函數(shù)、伽碼函數(shù)、貝塔函數(shù)、橢圓函數(shù)

20、等。 包括各種數(shù)學(xué)運(yùn)算功能。如:數(shù)值微分、數(shù)值積分、插值、求極值、方程求根、fft 、常微分方程的數(shù)值解等。(2)具有很好的圖視系統(tǒng)。 可方便地畫(huà)出兩維和三維圖形。 高級(jí)圖形處理。如:色彩控制、句柄圖形、動(dòng)畫(huà)等。 圖形用戶界面gui制作工具,可以制作用戶菜單和控件。使用者可以根據(jù)自己的需求編寫(xiě)出滿意的圖形界面。(3)可以直接處理聲言和圖形文件。 聲言文件。如: wav文件(例:wavread,sound等)。 圖形文件。如: bmp 、gif 、 pcx 、tif 、jpeg等文件。(4). 具有若干功能強(qiáng)大的應(yīng)用工具箱。如:simulink、comm、dsp、 signal等16種工具箱。(

21、5). 使用方便,具有很好的擴(kuò)張功能。 使用matlab語(yǔ)言編寫(xiě)的程序可以直接運(yùn)行,無(wú)需編譯。 可以m文件轉(zhuǎn)變?yōu)楠?dú)立于平臺(tái)的exe可執(zhí)行文件。 matlab的應(yīng)用接口程序api是matlab提供的十分重要的組件 ,由 一系列接口指令組成 。用戶就可在fortran或c中 , 把matlab當(dāng)作計(jì)算引擎使用 。 (6). 具有很好的幫助功能 提供十分詳細(xì)的幫助文件(pdf 、html 、demo文件)。 聯(lián)機(jī)查詢指令:help指令(例:help elfun,help exp,help simulink),lookfor關(guān)鍵詞(例: lookfor fourier )。2.2 matlab的程序設(shè)

22、計(jì) 2.2.1 腳本文件和函數(shù)文件m文件有兩種形式 :腳本文件(script file)和函數(shù)文件(function file )。這兩種文件的擴(kuò)展名,均為“ . m” 。(1)m腳本文件: 對(duì)于一些比較簡(jiǎn)單的問(wèn)題 ,在指令窗中直接輸入指令計(jì)算 。 對(duì)于復(fù)雜計(jì)算,采用腳本文件(script file)最為合適 。 matlab只是按文件所寫(xiě)的指令執(zhí)行 。 m腳本文件的特點(diǎn)是: 腳本文件的構(gòu)成比較簡(jiǎn)單,只是一串按用戶意圖排列而成的(包括控制流向指令在內(nèi)的)matlab指令集合。 腳本文件運(yùn)行后 ,所產(chǎn)生的所有變量都駐留在 matlab基本工作空間(base workspace)中。只要用戶不使用

23、清除指令(clear), matlab指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。(2)m函數(shù)文件: 與腳本文件不同 ,函數(shù)文件猶如一個(gè)“黑箱”,把一些數(shù)據(jù)送進(jìn)并經(jīng)加工處理,再把結(jié)果送出來(lái)。 matlab提供的函數(shù)指令大部分都是由函數(shù)文件定義的。 m函數(shù)文件的特點(diǎn)是: 從形式上看,與腳本文件不同 ,函數(shù)文件的笫一行總是以 “function”引導(dǎo)的“函數(shù)申明行”。 從運(yùn)行上看 ,與腳本文件運(yùn)行不同 ,每當(dāng)函數(shù)文件運(yùn)行, matlab就會(huì)專門(mén)為它開(kāi)辟一個(gè)臨時(shí)工作空間,稱為函數(shù)工作空間( function workspace) 。當(dāng)執(zhí)行文件最后一條指令時(shí) ,就結(jié)束該函數(shù)文件的運(yùn)行,同時(shí)該臨時(shí)

24、函數(shù)空間及其所有的中間變量就立即被清除。 matlab允許使用比 “標(biāo)稱數(shù)目 ”較少的輸入輸出宗量,實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用 。(3)m文件的一般結(jié)構(gòu): 由于從結(jié)構(gòu)上看 ,腳本文件只是比函數(shù)文件少一個(gè)“函數(shù)申明行”,所以只須描述清楚函數(shù)文件的結(jié)構(gòu) 。 典型m函數(shù)文件的結(jié)構(gòu)如下 : 函數(shù)申明行:位于函數(shù)文件的首行,以關(guān)鍵functio開(kāi)頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。 笫一注釋行:緊隨函數(shù)申明行之后以%開(kāi)頭笫一注釋行。該行供lookfor關(guān)鍵詞查詢和 help在線幫助使用 。 在線幫助文本區(qū):笫一注釋行及其之后的連續(xù)以%開(kāi)頭的所有注釋行構(gòu)成整個(gè)在線幫助文本。 編寫(xiě)和修改記錄:與在線幫助

25、文本區(qū)相隔一個(gè)“空”行,也以%開(kāi)頭,標(biāo)志編寫(xiě)及修改該m文件的作者和日期等 。 函數(shù)體:為清晰起見(jiàn),它與前面的注釋以“空”行相隔。2.2.2 函數(shù)調(diào)用和參數(shù)傳遞(1)局部變量和全局變量: 局部(local)變量:它存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運(yùn)行過(guò)程中,其影響范圍也僅限于該函數(shù)本身 。 全局(global)變量:通過(guò) global 指令,matlab也允許幾個(gè)不同的函數(shù)空間以及基本工作空間共享同一個(gè)變量,這種被共享的變量稱為全局變量。(2)函數(shù)調(diào)用: 在matlab中,調(diào)用函數(shù)的常用形式是:輸出參數(shù)1,輸出參數(shù)2, = 函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2, ) 函數(shù)調(diào)用可以嵌套,一個(gè)

26、函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自己 (遞歸調(diào)用)。(3)參數(shù)傳遞: matlab在函數(shù)調(diào)用上有一個(gè)與眾不同之處 :函數(shù)所傳遞的參數(shù)具有可調(diào)性 。 傳遞參數(shù)數(shù)目的可調(diào)性來(lái)源于如下兩個(gè)matlab永久變量: 函數(shù)體內(nèi)的 nargin 給出調(diào)用該函數(shù)時(shí)的輸入?yún)?shù)數(shù)目。 函數(shù)體內(nèi)的 nargout 給出調(diào)用該函數(shù)時(shí)的輸出參數(shù)數(shù)目。 只要在函數(shù)文件中包括這兩個(gè)變量,就可以知道該函數(shù)文件調(diào)用時(shí)的輸入?yún)?shù)和輸出參數(shù)數(shù)目。 值得注意:nargin、 nargout 本身都是函數(shù),不是變量,所以用戶不能賦值,也不能顯示。 “變長(zhǎng)度”輸入輸出宗量:varargin 、 varrgout。具有接受 “任意多輸入”

27、 、返回“任意多輸出”的能力 。 跨空間變量傳遞:evalin。2.2.3 m文件的調(diào)試(1)編寫(xiě) m文件時(shí),錯(cuò)誤(bug)在所難免。錯(cuò)誤有兩種:語(yǔ)法(syntax)錯(cuò)誤和運(yùn)行(run-time)錯(cuò)誤。(2)語(yǔ)法錯(cuò)誤是指變量名、函數(shù)名的誤寫(xiě),標(biāo)點(diǎn)符號(hào)的缺、漏等。對(duì)于這類錯(cuò)誤,通常能在運(yùn)行時(shí)發(fā)現(xiàn),終止執(zhí)行,并給出相應(yīng)的錯(cuò)誤原因以及所在行號(hào)。(3)運(yùn)行錯(cuò)誤是算法本身引起的,發(fā)生在運(yùn)行過(guò)程中。相對(duì)語(yǔ)法錯(cuò)誤而言,運(yùn)行錯(cuò)誤較難處理 。尤其是m函數(shù)文件,它一旦運(yùn)行停止,其中間變量被刪除一空,錯(cuò)誤很難查找。(4)有兩種調(diào)試方法:直接調(diào)試法和工具調(diào)試法。(5)直接調(diào)試法:可以用下面方法發(fā)現(xiàn)某些運(yùn)行錯(cuò)誤。(6)

28、在m文件中,將某些語(yǔ)句后面的分號(hào)去掉, 迫使m文件輸出一些中間計(jì)算結(jié)果,以便發(fā)現(xiàn)可能的錯(cuò)誤。(7)在適當(dāng)?shù)奈恢?,添加顯示某些關(guān)鍵變量值的語(yǔ)句(包括使用 disp 在內(nèi))。(8)利用 echo 指令,使運(yùn)行時(shí)在屏幕上逐行顯示文件內(nèi)容。echo on 能顯示m腳本文件;echo funnsme on 能顯示名為funnsme 的m函數(shù)文件。(9)在原m腳本或函數(shù)文件的適當(dāng)位置,增添指令 keyboard 。 keyboard 語(yǔ)句可以設(shè)置程序的斷點(diǎn) 。(10)通過(guò)將原m函數(shù)文件的函數(shù)申明行注釋掉,可使一個(gè)中間變量難于觀察的m函數(shù)文件變?yōu)橐粋€(gè)所有變量都保留在基本工作空間中的m腳本文件。 3 rsa公

29、鑰密碼體制3.1 算法簡(jiǎn)介公鑰加密算法的典型代表是rsa (rivest , shamir , adelman)算法 ,它是公共密鑰機(jī)制中的一種比較成熟的算法。它是建立在“大數(shù)分解和素?cái)?shù)據(jù)檢測(cè)”的理論基礎(chǔ)上的,兩個(gè)大素?cái)?shù)相乘在計(jì)算機(jī)上是容易實(shí)現(xiàn)的, 但將該乘積分解成兩個(gè)素?cái)?shù)因子的計(jì)算量卻相當(dāng)巨大, 大到甚至在計(jì)算機(jī)上不可能實(shí)現(xiàn),所以就確保了rsa算法的安全性。rsa算法是第一個(gè)既能用于數(shù)據(jù)加密又能用于數(shù)字簽名的算法, 它為公用網(wǎng)絡(luò)上信息的加密和鑒別提供了一種基本的方法,因此對(duì)它的開(kāi)發(fā)和研究對(duì)我們進(jìn)行知識(shí)總結(jié)和積累并將所學(xué)與實(shí)際相結(jié)合都有重大的實(shí)際意義。3.2 算法的數(shù)學(xué)基礎(chǔ)基于rsa算法的數(shù)學(xué)

30、定理:定義:設(shè)m 是正整數(shù),1,2,3,m 中與m 互素的數(shù)的個(gè)數(shù)記作,稱為歐拉函數(shù)。定理1(歐拉定理) 若整數(shù)a和m 互素,即gcd(a,m)=1,則 特別當(dāng)p為素?cái)?shù)時(shí),對(duì)任意的a,有定理2 若m1, gcd(a,m)=1,則存在c,使得 ca1(modm),稱c 為a 的模m 的逆,記作(modm)定理3 若, , ,則有 定理4 (中國(guó)剩余定理) 設(shè): 是兩兩互素的正整數(shù),則對(duì)任意的整數(shù)一次同余方程組: (i=1,2,k)對(duì)模: 有惟一解, 是滿足 的一個(gè)整數(shù),即對(duì)模的逆。3.3 rsa公鑰密碼算法3.3.1 算法步驟 首先,產(chǎn)生密鑰(1)隨機(jī)選取兩個(gè)大素?cái)?shù)p與q;(2)計(jì)算n=p*q(

31、公開(kāi)),(n)=(p-1)*(q-1)(保密);(3)隨機(jī)選取正整數(shù)e,使之滿足gcd(e,(n)=1,且1e(n);(4)利用歐幾里得算法計(jì)算d,使之滿足ed1(mod(n),d為保密的解密密鑰;(5)用e=作為公鑰,用d=作為私鑰。其次,加密和解密,用rsa公鑰密碼體制加密時(shí),先將明文數(shù)字化,然后進(jìn)行分組,每組的長(zhǎng)度不超過(guò)log(n),再每組單獨(dú)加密和解密。加密過(guò)程如下:假設(shè)要加密的明文組為m(0mn),加密過(guò)程就是c=e(m)=(mod n),c為密文;解密過(guò)程是:m=d(c)=(mod n);m就為恢復(fù)出的明文,它應(yīng)該與前面輸入的待加密的明文內(nèi)容一致。rsa算法整體思路如上所示,在本文

32、中我們就此算法過(guò)程用對(duì)應(yīng)matlab語(yǔ)言實(shí)現(xiàn)。3.3.2 參數(shù)分析rsa 算法的安全性等價(jià)于分解n 的困難性,但是在實(shí)際的應(yīng)用中,很多時(shí)候是因?yàn)樗惴▽?shí)現(xiàn)的細(xì)節(jié)漏洞導(dǎo)致被攻擊,所以在rsa算法構(gòu)造密碼系統(tǒng)時(shí),為了保證系統(tǒng)的安全性需要仔細(xì)地選擇使用的參數(shù)。rsa 算法主要的參數(shù)有3 個(gè):模數(shù)n 、加密密鑰e和解密密鑰d 。(1)算法模n的確定:rsa模數(shù)n =p*q是rsa算法安全性的核心,如果模數(shù)n被分解,則rsa公鑰密碼體制將立刻被攻破,所以選擇合適的n是實(shí)現(xiàn)rsa 算法的重要環(huán)節(jié)。一般來(lái)講,模數(shù)n的選擇可以遵守以下4個(gè)原則: n=p*q , 要求p 和q 為強(qiáng)素?cái)?shù)(strong prime)

33、;強(qiáng)素?cái)?shù)定義如下:存在兩個(gè)大素?cái)?shù)使得;存在4 個(gè)大素?cái)?shù),使得;稱為三級(jí)素?cái)?shù),為二級(jí)素?cái)?shù)。 p 和q 之差要大,相差幾位以上; p 1 與q 1 的最大公因子要?。?p 和q 要足夠大。這是應(yīng)用r s a 算法要遵守的最基本原則,如果rsa算法是安全的,則n=p*q 必須足夠大,使得因式分解模數(shù)n 在計(jì)算上是不可行的,下面給出的是一般性使用原則: 臨時(shí)性(casual)384bit,經(jīng)過(guò)努力可以破譯; 商用性(commercial)512bit,可由專業(yè)組織破譯; 軍用性(military)1024b it,專家預(yù)測(cè)十年內(nèi)不可破譯。隨著計(jì)算機(jī)能力的不斷提高和分布式運(yùn)算的發(fā)展,沒(méi)有人敢斷言具體的安

34、全密鑰長(zhǎng)度。(2)算法e 與d 的選取原則:在rsa算法中的條件是很容易滿足的,這是因?yàn)槿我鈨蓚€(gè)隨機(jī)數(shù)互素的概率為,如果e ,d 比較小,加、解密的速度快,也便于存儲(chǔ),但這必然導(dǎo)致安全性問(wèn)題,一般的e,d 的選取原則如下: e不可過(guò)小。經(jīng)驗(yàn)上e 選16位的素?cái)?shù),這樣既可以有效地防止攻擊,又有較快的加、解密速度。 最好選e 為的階數(shù),即存在i ,使得,i 達(dá)到,可以有效地抗擊攻擊。 d 要大于。選定e 后可使用歐幾里德算法在多項(xiàng)式時(shí)間內(nèi)計(jì)算出d。3.3.3 安全性分析 如果說(shuō)rsa體制的安全性等價(jià)于因子分解,那就是說(shuō),作為公鑰選擇的(e,n)參數(shù),n是不能輕易被因子分解的,否則構(gòu)造單向函數(shù)的t=

35、(n)=(p-1)(q-1)就沒(méi)有秘密可言了。原因很簡(jiǎn)單,rsa的安全性依賴于因子分解的困難性,目前因子分解速度最快方法的時(shí)間復(fù)雜度為:t=o(exp(sqrt(ln(n)ln ln(n)=o(),且n因子被分解,就意味著rsa系統(tǒng)被攻破。反過(guò)來(lái),能攻破rsa系統(tǒng),表明可以分解n的因子,不過(guò)這不是絕對(duì)的。所以出于安全性考慮,在設(shè)計(jì)rsa系統(tǒng)時(shí),對(duì)n的選擇是很重要的。在rsa算法中,若n =p*q 被因數(shù)分解,則rsa便被攻破。因?yàn)槿魀,q 已知,則(n)=(p- 1)*(q - 1)便可以計(jì)算出,解密密鑰d 便可利用歐幾里得算法求出。因此rsa的安全性是依賴于因數(shù)分解的困難性。在上一節(jié)的參數(shù)分

36、析中我們重點(diǎn)講了對(duì)各參數(shù)選取原則,這里不再重復(fù)。在許多實(shí)際應(yīng)用中,人們總希望使用位數(shù)較短的密鑰d,一是可降低解出或簽名的時(shí)間,二是能夠滿足計(jì)算能力低于主機(jī)的硬件芯片的需求,比如ic卡中的cpu處理?,F(xiàn)在我們就分析幾個(gè)rsa體制的安全性問(wèn)題。(1)弱密鑰情形類似其他密碼體制一樣,rsa體制也存在弱密鑰現(xiàn)象。若已知明文組=123,=183,=72,=30,假定n=pq=17x11=187,取e=7時(shí),可以發(fā)現(xiàn),明文m經(jīng)過(guò)rsa連續(xù)變換后,就能恢復(fù)原文。比如:根據(jù)=rsa()=(mod n),則有: =183(mod187) =72(mod187) =30(mod187) =123(mod187)這

37、時(shí)=,對(duì)加密系統(tǒng)來(lái)說(shuō)是不可靠的,必須加以克服。(2)同模攻擊的可能性假定兩個(gè)用戶,共享一個(gè)模為n的rsa算法,加密密鑰分別為,并且gcd(,)=1,如果用戶a想加密同一個(gè)明文m,分別從,加密得到密文:= mod n和=mod n,分別將送給,送給。而攻擊者截獲兩個(gè)密文后,可以通過(guò)使用擴(kuò)展歐幾里得算法得到r,s,使得r. +s. =1.然后按下列計(jì)算: . mod n=()()mod n= m其中,=為同一明文,表明即使rsa密碼系統(tǒng)很安全,但攻擊者破獲a發(fā)送的明文也是可能的。所以實(shí)際中建議不同用戶不可使用公共的模n。除此之外,不同用戶選用的素?cái)?shù)也是不能相同的。否則,任何人都可以用歐幾里得算法獲

38、得(,)= p,結(jié)果容易得到,的分解式。(3)由密文泄露明文相關(guān)的部分信息量與其他一些密碼弱點(diǎn)一樣,rsa體制同樣存在將明文的部分信息由密文泄露出去的可能。比如給定密文:c=mod ,由可知,其中e必為 奇數(shù)情形。根據(jù)jcaobi符號(hào)容易推出. 因此,只要給定一個(gè)密文c,不用通過(guò)解密密文就能有效的計(jì)算出結(jié)果,即反映了在rsa密碼系統(tǒng)中,通過(guò)加密密文也會(huì)泄露一些有關(guān)的明文信息。 3.4 公鑰密碼體制中安全大素?cái)?shù)的生成構(gòu)造rsa公鑰密碼體制,關(guān)鍵就在于選取大素?cái)?shù)p ,q 。產(chǎn)生素?cái)?shù)的方法可分為以下兩類:確定性素?cái)?shù)的產(chǎn)生方法和概率性素?cái)?shù)的產(chǎn)生方法。確定性素?cái)?shù)產(chǎn)生方法的優(yōu)點(diǎn)在于產(chǎn)生的數(shù)一定是素?cái)?shù),缺點(diǎn)

39、是產(chǎn)生的素?cái)?shù)帶有一定的限制;而概率性素?cái)?shù)產(chǎn)生方法的缺點(diǎn)在于它不能證明該數(shù)是素?cái)?shù),也就是說(shuō),產(chǎn)生的數(shù)只能是偽素?cái)?shù),為合數(shù)的可能性很小。但這種可能依然存在。優(yōu)點(diǎn)在于使用概率性素?cái)?shù)產(chǎn)生方法,產(chǎn)生的偽素?cái)?shù)速度很快,構(gòu)造的偽素?cái)?shù)無(wú)規(guī)律性。于是在構(gòu)造rsa體制中的大素?cái)?shù)時(shí),首先利用概率性素?cái)?shù)測(cè)試產(chǎn)生偽素?cái)?shù),然后再利用確定性素?cái)?shù)測(cè)試法進(jìn)行檢驗(yàn),這樣可以發(fā)揮二者的優(yōu)越性。所以文中的算法基于這個(gè)原理,預(yù)先對(duì)密鑰素?cái)?shù)進(jìn)行篩選,采用montgomery模乘算法優(yōu)化的概率性素?cái)?shù)產(chǎn)生方法miller-rabin算法進(jìn)行檢測(cè),最后用確定性素?cái)?shù)產(chǎn)生方法pocklington定理進(jìn)行驗(yàn)證。3.4.1 素?cái)?shù)篩選對(duì)于產(chǎn)生的大數(shù),

40、在進(jìn)行后面的素?cái)?shù)判別時(shí)會(huì)比較耗時(shí),所以,在把大數(shù)送入到素?cái)?shù)判別程序前,將一些容易判別出的合數(shù)過(guò)濾掉。這里采用大數(shù)除以小素?cái)?shù)過(guò)濾掉一部分合數(shù),選取53個(gè)小素?cái)?shù)進(jìn)行對(duì)大數(shù)的過(guò)濾。算法的步驟如下:(1) 隨機(jī)產(chǎn)生一個(gè)大整數(shù)n ;(2) 選取從2 開(kāi)始的一組個(gè)數(shù)約為53個(gè)的素?cái)?shù),記為ai ;(3) i 0;(4) 當(dāng)i 53時(shí),計(jì)算y n (mod ai);(5) 若y = 0,表示沒(méi)有余數(shù),則數(shù)n 不為素?cái)?shù),結(jié)束;否則,i i+ 1,轉(zhuǎn)(4);(6) 若i= 52,返回n 為素?cái)?shù)。3.4.2 素?cái)?shù)檢測(cè)素性檢測(cè)就是判斷一個(gè)整數(shù)是否為素?cái)?shù)的準(zhǔn)則。最簡(jiǎn)單的素性檢測(cè)就是“試除法”,對(duì)于給定的數(shù)n ,用p 進(jìn)

41、行試除(0p)。檢測(cè)一個(gè)數(shù)n 是素?cái)?shù)的最確定的方法就是驗(yàn)證它不能被2和之間的任何數(shù)整除,但這種方法計(jì)算量太大,十分耗時(shí),在實(shí)際中需要更有效的素性檢測(cè)方法。miller- rabin算法檢測(cè)是實(shí)際中應(yīng)用最多的素性檢測(cè),它在計(jì)算上較省時(shí)、容易實(shí)現(xiàn)且錯(cuò)誤概率較低。(1). miller - rabin算法miller-rabin算法是fermat算法的一個(gè)變形改進(jìn),它的理論基礎(chǔ)是由fermat定理引申而來(lái)。fermat定理:n是一個(gè)奇素?cái)?shù),a是任何整數(shù)(1an-1) ,則a= 1(mod n)。miller-rabin算法的理論基礎(chǔ):如果n是一個(gè)奇素?cái)?shù),將n-1= 2m ,r是非負(fù)整數(shù),m是正奇數(shù),

42、 a 是和n互素的任何整數(shù),那么a1(mod n)或者對(duì)某個(gè)h(0hr-1),等式a 1(mod n)成立,其中w =2m 。這個(gè)理論是通過(guò)一個(gè)事實(shí)經(jīng)由fermat定理推導(dǎo)而來(lái):n是一個(gè)奇素?cái)?shù),則方程x=1mod n有1兩個(gè)解。miller-rabin算法的步驟如下: 將n-1表示成2m(其中r 是非負(fù)整數(shù), m 是正奇數(shù)) ; 隨機(jī)產(chǎn)生一個(gè)整數(shù)a(1an-1); i0 ,計(jì)算xa(mod n); 若x=1或x=n-1,則n 通過(guò)測(cè)試,轉(zhuǎn)(7); 若i=1,則n為非素?cái)?shù),結(jié)束;否則轉(zhuǎn)(6); 當(dāng)ir 時(shí),ii+1,xx(mod n),若x=n-1,則n 通過(guò)測(cè)試,轉(zhuǎn)(7)。否則轉(zhuǎn)(5); 返回

43、n為素?cái)?shù)。miller-rabin算法并不是一個(gè)確定算法。若n 是奇合數(shù),則n通過(guò)以a 為基的miller-rabin算法測(cè)試的數(shù)目最多為(n-1)/4,1an - 1。若n 是正整數(shù),選k個(gè)小于n 的正整數(shù),以這k 個(gè)數(shù)作為基用miller-rabin算法進(jìn)行測(cè)試,若n 是合數(shù),k 次測(cè)試全部通過(guò)的概率為(1/4)。比如: k = 100, n 是合數(shù), 但測(cè)試全部通過(guò)的概率為(1/4), 這是很小的數(shù),說(shuō)明這樣的事情幾乎不可能發(fā)生。(2). 采用montgomery 算法進(jìn)行優(yōu)化miller-rabin算法最耗時(shí)的步驟是(3)和(6)的模冪運(yùn)算。montgomery算法將部分積對(duì)任意的n

44、取模轉(zhuǎn)化為對(duì)基數(shù)r 取模,簡(jiǎn)化了計(jì)算過(guò)程, 提高了模冪運(yùn)算的速度.montgomery算法的理論基礎(chǔ)是:設(shè)n 和r是互素的兩個(gè)整數(shù),且rr- nn=1(n=-nmod r) ,則對(duì)于任意整數(shù)t,當(dāng)m = tnmod r 時(shí),( t+ mn)/r 為整數(shù),且滿足(t+mn) / r =trmod n 。上述理論中,t+mn =t+(tn- kr)n =t(1+ nn)-krn = trr - krn ,為r的倍數(shù),所以(t+mn)/r為整數(shù)。又因?yàn)閠+ mn =t modn , 所以可以很容易推導(dǎo)出(t+ mn)/r= trmodn ??梢钥闯?montgomery在算法中選取0 t n r ,

45、這樣(t+mn)/r2n ,(t+mn)/r與trmod n 也就至多相差一個(gè)n ,只需一次額外的大數(shù)減法。這樣就給出了滿足0tnr 的任意整數(shù)t時(shí)tr mod n的快速算法, 那么就可以類似于abmodn 的模乘運(yùn)算,其中0a ,b n 。所以s=mon(a ,b ,n)=a*b*rmod n的計(jì)算步驟如下: 計(jì)算aar mod n ,bb r mod n ,tab; 選擇與n互素的基數(shù)r ,并選取r和n,滿足0r n 及0 n t; 計(jì)算s t+(tmod r )nmod rn/r ; 若sn , s=s-n ; 返回s 。然而,這樣計(jì)算出的結(jié)果s 并不是嚴(yán)格意義上的模乘abmod n ,

46、而是多了一個(gè)因子r,那么模乘abmod n 可以通過(guò)兩次montgomery算法得到,即:abmod n =(a*b *rmod n)*rmod n =mon(a,b,n) *r mod n = s*1*r mod n =mon(mon(a ,b,n),1,n)。所以模冪運(yùn)算z=a(mod n) 的計(jì)算步驟如下: im -1; 計(jì)算zmon(a,1,n); 計(jì)算zmon(z,1,n); ii- 1,若i 0,轉(zhuǎn)(3),否則轉(zhuǎn)(5); 返回z??梢钥闯? 如果僅僅是求模乘運(yùn)算,montgomery算法需要用到一般的模運(yùn)算和模逆運(yùn)算進(jìn)行預(yù)處理,montgomery算法并不能有任何速度上的提高,但對(duì)

47、于模冪運(yùn)算,模冪運(yùn)算中約有(3log e)/2次的模乘運(yùn)算,這樣預(yù)處理時(shí),只要處理一次就可以進(jìn)行多次的沒(méi)有除法的montgomery模乘運(yùn)算,這樣將大大提高模冪運(yùn)算的速度,進(jìn)而提高miller-rabin算法的速度。(3). 素?cái)?shù)驗(yàn)證采用pocklington定理對(duì)素?cái)?shù)進(jìn)行驗(yàn)證,基于pocklington定理的確定性素?cái)?shù)產(chǎn)生方法,它需要已知n - 1的部分素因子。pocklington定理:設(shè)n = r *f + 1, 這里f=,其中q,q,q是不同的素?cái)?shù),若存在a 滿足:a1(mod n)且gcd(a- 1,n) = 1,其中j =1, r 。那么n 的每一個(gè)素因子p 都有p=f *m +

48、1的形式(m 1)。于是若f ,則n 為素?cái)?shù)。則此算法的步驟如下:, 分解n - 1,使n - 1= r f ,其中f ; 分解f ,使f = ,其中q( j = 1,2,r)為不同的素?cái)?shù); a 1; a a + 1; 若a (mod n) = 1,則轉(zhuǎn)(7); 轉(zhuǎn)(4) ,否則n 可能不是素?cái)?shù),轉(zhuǎn)(8); 若對(duì)于任意的j(j =1,2,r),gcd(a- 1,n)= 1,則n 是素?cái)?shù),否則轉(zhuǎn)(4); 退出。3.5 rsa的matlab實(shí)現(xiàn)3.5.1算法原理 rsa算法的理論基礎(chǔ)是數(shù)論中的歐拉函數(shù),他的安全性基于大數(shù)分解的困難性,在理論上要計(jì)算兩個(gè)大素?cái)?shù)的乘積是容易的,但反過(guò)來(lái)要把一個(gè)大數(shù)分解

49、成兩個(gè)素?cái)?shù)因子相乘的形式是很困難的,正是由于這個(gè)原因保證了此算法的安全性。rsa的安全性依賴于大數(shù)分解。公鑰和私鑰都是兩個(gè)大素?cái)?shù) ( 大于 100個(gè)十進(jìn)制位)的函數(shù)。據(jù)猜測(cè),從一個(gè)密鑰和密文推斷出明文的難度等同于分解兩個(gè)大素?cái)?shù)的積。 密鑰對(duì)的產(chǎn)生:選擇兩個(gè)大素?cái)?shù),p 和q 。計(jì)算:n = p * q 。然后隨機(jī)選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質(zhì)。最后,利用euclid 算法計(jì)算解密密鑰d, 滿足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互質(zhì)。數(shù)e和 n是公鑰,d是私鑰。兩個(gè)素?cái)?shù)p和q不再需要,應(yīng)該

50、丟棄,不要讓任何人知道。 加密信息 m(二進(jìn)制表示)時(shí),首先把m分成等長(zhǎng)數(shù)據(jù)塊 m1 ,m2,., mi ,塊長(zhǎng)s,其中 2s = n, s 盡可能的大。對(duì)應(yīng)的密文是:ci = mie ( mod n ) ( a ) 解密時(shí)作如下計(jì)算: mi = cid ( mod n ) ( b )算法流程(1). 產(chǎn)生密鑰 任意選取兩個(gè)不同的大質(zhì)數(shù)p和q,計(jì)算乘積n=p*q; 任意選取一個(gè)大整數(shù)e,e與(p-1)*(q-1)互素,整數(shù)e用做加密密鑰。注意:e的選取是很容易的,例如,所有大于p和q的素?cái)?shù)都可用。 確定解密密鑰d: d * e = 1 mod(p - 1)*(q - 1) 根據(jù)e、p和q可以容

51、易地計(jì)算出d。 公開(kāi)整數(shù)n和e,但是不公開(kāi)d;開(kāi)始隨機(jī)選取兩個(gè)素?cái)?shù)和計(jì)算計(jì)算歐拉函數(shù)在2和之間隨機(jī)選擇一個(gè)和互素的加密密鑰已知和歐拉函數(shù),利用,求出解密密鑰得出:公鑰為,私鑰為結(jié)束圖3.1產(chǎn)生密鑰(2). 加密輸入待加密的明文,經(jīng)過(guò)hash變換求出其ascall碼值,再經(jīng)過(guò)加密算法:,得到密文。將明文p (假設(shè)p是一個(gè)小于r的整數(shù))加密為密文c,計(jì)算方法為:c= mie ( mod n )開(kāi)始打開(kāi)要加密的明文成功打開(kāi)文件? n y新建一個(gè)文件,用于存密文 成功新建文件? ny y將明文的擴(kuò)展名逐字節(jié)加密,并將結(jié)果寫(xiě)入密文從明文中一次讀入固定長(zhǎng)度的字節(jié)到緩沖結(jié)束對(duì)緩沖區(qū)的數(shù)據(jù)逐字節(jié)加密,并將結(jié)果

52、寫(xiě)入密文關(guān)閉明文明文的數(shù)據(jù)全部讀出了嗎?關(guān)閉密文ny圖3.2 加密流程圖(3). 解密經(jīng)過(guò)解密算法,將密文回復(fù)為原來(lái)的明文。將密文c解密為明文p,計(jì)算方法為:p = cid ( mod n )打開(kāi)要解密的密文成功打開(kāi)文件嗎?從密文中讀出固定長(zhǎng)度的數(shù)據(jù)到密文緩沖 然而只根據(jù)r和e(不是p和q)要計(jì)算出d是不可能的。因此,任何人都可對(duì)明文進(jìn)行加密,但只有授權(quán)用戶(知道d)才可對(duì)密文解密。 開(kāi)始對(duì)密文緩沖中的數(shù)據(jù)解密,結(jié)果存入明文緩沖從密文中讀出加密過(guò)的明文擴(kuò)展名對(duì)密文形式的明文擴(kuò)展名進(jìn)行解密,并將解密得到的擴(kuò)展名與新明文的文件名連接成新明文的全名 用新明文的全名創(chuàng)建一個(gè)文件將明文緩沖區(qū)中的解密結(jié)果寫(xiě)入新明文成功創(chuàng)建文件?結(jié)束密文中的數(shù)據(jù)全部讀出了嗎?關(guān)閉密文關(guān)閉新明文圖3.3 解密流程圖3.5.2 運(yùn)行過(guò)程 具體實(shí)現(xiàn)過(guò)程如下:在matlab環(huán)境下新建一個(gè).m文件,將程序保存在此文件中,然后由matlab的file菜單下的open命令找到保存的程序,再點(diǎn)擊d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論