版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要:</b></p><p> RSA算法是基于數論的公鑰密碼體制,是公鑰密碼體制中最優(yōu)秀的加密算法,同時也是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。 RSA是被研究得最廣泛的公鑰算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數的因子分解,但并沒有從理論上證明破譯
2、RSA的難度與大數分解難度等價。本文主要研究的內容包括:第一,對RSA算法進行了全面系統(tǒng)的介紹,包括RSA算法的應用現狀和原理—大素數的產生、密鑰對的產生、對明文的加密運算和密文的解密運算,為具體實現打下了理論基礎;第二,介紹了RSA機密體制的一些基本概念及原理;第三,詳述了RSA加密的設計與實現,主要實現的模塊包括RSA密鑰的產生(一對公鑰和私鑰),RSA加密算法和解密算法的實現;第五,對該系統(tǒng)進行了整體的測試和分析改進; </
3、p><p> 關鍵詞:RSA算法;公鑰密碼體制;加密;解密;VC++</p><p><b> 目錄</b></p><p><b> 1 課題綜述1</b></p><p> 1.1 課題來源1</p><p> 1.2 課題意義1</p>
4、<p> 1.3 預期目標1</p><p><b> 2 系統(tǒng)分析1</b></p><p> 2.1 基礎知識2</p><p> 2.2 總體方案4</p><p> 2.3 功能模塊4</p><p><b> 3 系統(tǒng)設計5<
5、;/b></p><p> 3.1 算法描述5</p><p> 3.2 流程圖7</p><p><b> 4 代碼編寫9</b></p><p> 5 運行與測試14</p><p> 5.1 產生公鑰和密鑰14</p><p>
6、5.2 加密與解密14</p><p><b> 總 結16</b></p><p><b> 致 謝17</b></p><p><b> 參考文獻18</b></p><p><b> 1 課題綜述</b></p>&
7、lt;p><b> 1.1 課題來源</b></p><p> 隨著電子信息技術的迅速發(fā)展,人類已步入信息社會。但是由于整個社會形成了一個巨大的計算機網絡,任何一個計算機網絡出現的安全問題,都會影響整個國家的網絡安全,所以信息安全、計算機網絡安全問題已引起了人類的高度重視。無論是在局域網還是在廣域網中,都存在著自然和人為等諸多因素的脆弱性和潛在威脅。故此,網絡的安全措施應是能全方
8、位地針對各種不同的威脅和脆弱性,這樣才能確保網絡信息的保密性、完整性和可用性。現代密碼學已成為信息安全技術的核心,密碼學是以研究通信安全保密的學科,即研究對傳輸信息采用何種秘密的變換以防止第三者對信息的竊取。公鑰密碼體制的特點是:接收方B產生一對密鑰(PK和SK);PK公開,SK保密;從PK推出SK是很困難的;A、B雙方通信時,A通過任何途徑取得B的公鑰,用B的公鑰加密信息,加密后的信息可通過任何不安全信道發(fā)送。B收到密文信息后,用自己
9、私鑰解密恢復出明文。公鑰密碼體制已成為確保信息的安全性的關鍵技術。RSA公鑰密碼體制到目前為止還是一種被認可為安全的體制。</p><p><b> 1.2 課題意義</b></p><p> RSA公鑰加密算法是第一個既能用于數據加密也能用于數字簽名的算法。它易于理解和操作,也十分流行。算法的名字以發(fā)明者的姓氏首字母命名:Ron Rivest, Adi Sha
10、mir 和Leonard Adleman。雖然自1978年提出以來,RSA的安全性一直未能得到理論上的證明,但它經歷了各種攻擊,至今未被完全攻破。隨著越來越多的商業(yè)應用和標準化工作,RSA已經成為最具代表性的公鑰加密技術。VISA、MasterCard、IBM、Microsoft等公司協(xié)力制定的安全電子交易標準(Secure Electronic Transactions,SET)就采用了標準RSA算法,這使得RSA在我們的生活中幾乎無
11、處不在。網上交易加密連接、網上銀行身份驗證、各種信用卡使用的數字證書、智能移動電話和存儲卡的驗證功能芯片等,大多數使用RSA技術。應用了RSA加密體制保證了秘密信息的安全。</p><p><b> 1.3 預期目標</b></p><p> 在充分理解RSA加密體制概念和原理的基礎上,用Microsoft Visual C++ 6.0實現RSA加密與解密,演示
12、公鑰與密鑰的生成及加密與解密的過程。</p><p><b> 2 系統(tǒng)分析</b></p><p><b> 2.1 基礎知識</b></p><p><b> 2.1.1 素數</b></p><p> 稱整數p(p>1)是素數,如果p的因子只有±
13、;1,±p。</p><p> 稱c是兩個整數a、b的最大公因子,如果</p><p> ① c是a的因子也是b 的因子,即c是a、b的公因子。</p><p> ?、?a和b的任一公因子,也是c的因子。</p><p> 表示為c=gcd(a, b)。</p><p> 由于要求最大公因子為正,所以
14、gcd(a,b)=gcd(a,-b)=gcd(-a,b)=gcd(-a,-b)。一般gcd(a,b)=gcd(|a|,|b|)。由任一非0整數能整除0,可得gcd(a,0)=|a|。如果將a,b都表示為素數的乘積,則gcd(a, b)極易確定。</p><p> 一般由c=gcd(a,b)可得: 對每一素數p,cp=min(ap,bp)。</p><p> 由于確定大數的素因子不很容易
15、,所以這種方法不能直接用于求兩個大數的最大公因子,如何求兩個大數的最大公因子在下面介紹。</p><p> 如果gcd(a,b)=1,則稱a和b互素。</p><p><b> 2.1.2 模運算</b></p><p> 設n是一正整數,a是整數,如果用n除a,得商為q,余數為r,則</p><p> a=qn
16、+r,0≤r<n, </p><p> 其中x為小于或等于x的最大整數。</p><p> 用a mod n表示余數r</p><p> 如果(a mod n)=(b mod n),則稱兩整數a和b模n同余,記為a≡b mod n。稱與a模n同余的數的全體為a的同余類,記為[a],稱a為這個同余類的表示元素。</p>&l
17、t;p> 2.2.3 歐拉函數和歐拉定理</p><p> 歐拉函數:設n是一正整數,小于n且與n互素的正整數的個數稱為n的歐拉函數,記為φ(n)。若n是素數,則顯然有φ(n)=n-1。若n是兩個素數p和q的乘積,則φ(n)=φ(p)×φ(q)=(p-1)×(q-1)。</p><p> 歐拉定理:若a和n互素,則aφ(n)≡1 mod n。</p
18、><p> 2.1.4 歐幾里德算法</p><p> 歐幾里得(Euclid)算法是數論中的一個基本技術,是求兩個正整數的最大公因子的簡化過程。而推廣的Euclid算法不僅可求兩個正整數的最大公因子,而且當兩個正整數互素時,還可求出其中一個數關于另一個數的乘法逆元。</p><p> 1. 求最大公因子:Euclid算法是基于下面一個基本結論: </p&
19、gt;<p> 對任意非負整數a和正整數b,有gcd(a, b)=gcd(b, a mod b)。</p><p><b> 2. 求乘法逆元:</b></p><p> 如果gcd(a, b)=1 ,則b在mod a下有乘法逆元(不妨設b<a),即存在一x (x<a),使得bx≡1 mod a。</p><p>
20、; 2.1.5 RSA算法中的計算問題</p><p> 1. RSA的加密與解密過程</p><p> RSA的加密、解密過程都為求一個整數的整數次冪,再取模。如果按其含義直接計算,則中間結果非常大,有可能超出計算機所允許的整數取值范圍。如上例中解密運算6677 mod 119,先求6677再取模,則中間結果就已遠遠超出了計算機允許的整數取值范圍。而用模運算的性質:</p&g
21、t;<p> (a×b) mod n=[(a mod n)×(b mod n)] mod n</p><p> 就可減小中間結果再者,考慮如何提高加、解密運算中指數運算的有效性。例如求x16,直接計算的話需做15次乘法。然而如果重復對每個部分結果做平方運算即求x,x2,x4,x8,x16則只需4次乘法。</p><p> 2. RSA密鑰的產生<
22、;/p><p> 產生密鑰時,需要考慮兩個大素數p、q的選取,以及e的選取和d的計算。</p><p> 因為n=pq在體制中是公開的,因此為了防止敵手通過窮搜索發(fā)現p、q,這兩個素數應是在一個足夠大的整數集合中選取的大數。如果選取p和q為10100左右的大素數,那么n的階為10200,每個明文分組可以含有664位(10200≈2664),即83個8比特字節(jié),這比DES的數據分組(8個8比
23、特字節(jié))大得多,這時就能看出RSA算法的優(yōu)越性了。因此如何有效地尋找大素數是第一個需要解決的問題。尋找大素數時一般是先隨機選取一個大的奇數(例如用偽隨機數產生器),然后用素性檢驗算法檢驗這一奇數是否為素數,如果不是則選取另一大奇數,重復這一過程,直到找到素數為止。素性檢驗算法通常都是概率性的,但如果算法被多次重復執(zhí)行,每次執(zhí)行時輸入不同的參數,算法的檢驗結果都認為被檢驗的數是素數,那么就可以比較有把握地認為被檢驗的數是素數。</p
24、><p> 2.1.6公鑰密碼體制的基本概念</p><p> 在公鑰密碼體制以前的整個密碼學史中,所有的密碼算法,包括原始手工計算的、由機械設備實現的以及由計算機實現的,都是基于代換和置換這兩個基本工具。而公鑰密碼體制則為密碼學的發(fā)展提供了新的理論和技術基礎,一方面公鑰密碼算法的基本工具不再是代換和置換,而是數學函數;另一方面公鑰密碼算法是以非對稱的形式使用兩個密鑰,兩個密鑰的使用對保密
25、性、密鑰分配、認證等都有著深刻的意義??梢哉f公鑰密碼體制的出現在密碼學史上是一個最大的而且是惟一真正的革命。公鑰密碼體制的概念是在解決單鑰密碼體制中最難解決的兩個問題時提出的,這兩個問題是密鑰分配和數字簽字。單鑰密碼體制在進行密鑰分配時(看第5章),要求通信雙方或者已經有一個共享的密鑰,或者可籍助于一個密鑰分配中心。對第一個要求,常??捎萌斯し绞絺魉碗p方最初共享的密鑰,這種方法成本很高,而且還完全依賴信使的可靠性。第二個要求則完全依賴于
26、密鑰分配中心的可靠性。第二個問題數字簽字考慮的是如何為數字化的消息或文件提供一種類似于為書面文件手書簽字的方法。1976年W.Diffie和M.Hellman對解決上述兩個問題有了突破,從而提出了公鑰密碼體制。</p><p><b> 2.2 總體方案</b></p><p> 要實現生成公鑰和密鑰的功能,必須先生成兩個大素數。方法是先設定隨機種子為系統(tǒng)當前時
27、間,然后隨即生成兩個100以內的隨機數,并判斷其是否為素數,取出這兩個素數。然后通過調用函數生成公鑰對和密鑰對,同時顯示出結果到屏幕上。隨后可以用公鑰對明文進行加密,將加密后的秘聞顯示出來。然后可以演示用密鑰對密文進行解密,并將結果顯示到屏幕上。</p><p><b> 2.3 功能模塊</b></p><p> 本系統(tǒng)含有兩個功能模塊:</p>
28、<p> ?。?)公鑰和密鑰生成模塊:可以生成個100以內的素數p和q,以及n、e、d;</p><p> ?。?)加密和解密模塊:可以顯示加密后的數據,點擊解密可顯示解密后數據。</p><p> 系統(tǒng)功能界面圖如下:</p><p> 圖2-1 系統(tǒng)功能界面圖</p><p><b> 3 系統(tǒng)設計</
29、b></p><p><b> 3.1 算法描述</b></p><p><b> RSA算法描述:</b></p><p><b> (1) 密鑰的產生</b></p><p> ?、?選兩個保密的大素數p和q。</p><p> ?、?
30、計算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的歐拉函數值。</p><p> ?、?選一整數e,滿足1<e<φ(n),且gcd(φ(n),e)=1。</p><p> ?、?計算d,滿足d·e≡1 mod φ(n),即d是e在模φ(n)下的乘法逆元,因e與φ(n)互素,由模運算可知,它的乘法逆元一定存在。</p><p
31、> ?、?以{e,n}為公開鑰,{d,n}為秘密鑰。</p><p><b> (2) 加密</b></p><p> 加密時首先將明文比特串分組,使得每個分組對應的十進制數小于n,即分組長度小于log2n。然后對每個明文分組m,作加密運算: c≡me mod n</p><p><b> (3) 解密</b>
32、</p><p> 對密文分組的解密運算為: </p><p> m≡cd mod n</p><p> 下面證明RSA算法中解密過程的正確性。</p><p> 證明: 由加密過程知c≡me mod n,所以</p><p> cd mod n≡med mod n≡m1 mod φ(n) mod n≡mkφ
33、(n)+1 mod n</p><p> 要獲得兩個隨機的小于100的素數,可以首先將系統(tǒng)當前時間設置為隨機數種子,然后對生成的隨機數取100模,然后調用判斷素數的函數。要判斷一個屬實否為素數,可以判斷數n從2到n的開方,是否能整除n。偽代碼如下:</p><p> for(i從 2 到 n的開方 ; i++)</p><p><b> {</
34、b></p><p><b> if(n被i整除)</b></p><p> 則n不是素數終止循環(huán);</p><p> if(i > n的開方 )</p><p><b> 返回n為宿舍;</b></p><p><b> }</b>
35、;</p><p> 求最大公因子的算法:Euclid算法就是用這種方法,因gcd(a, b)=gcd(|a|, |b|),因此可假定算法的輸入是兩個正整數,設為d,f,并設f >d。</p><p> Euclid(f, d)</p><p> ?、賆←f; Y←d;</p><p> ?、?if Y=0 then return
36、X=gcd(f,d);</p><p> ?、?R=X mod Y;</p><p><b> ?、?X=Y;</b></p><p><b> ?、?Y=R;</b></p><p><b> ?、?goto ②。</b></p><p> 求乘法逆
37、元:推廣的Euclid算法先求出gcd(a, b),當gcd(a, b)=1時,則返回b的逆元。</p><p> Extended Euclid(f, d) (設 f >d) </p><p> ?、?(X1,X2,X3)←(1,0,f);(Y1,Y2,Y3)←(0,1,d);</p><p> ?、?if Y3=0 then return X3=gcd
38、(f, d);no inverse;</p><p> ?、?if Y3=1 then return Y3=gcd(f, d);Y2=d-1 mod f;</p><p> ?、?Q=X3Y3 ;</p><p> ?、?(T1,T2,T3)←(X1-QY1,X2-QY2,X3-QY3);</p><p> ?、?(X1,X2,X3)←(
39、Y1,Y2,Y3);</p><p> ?、?(Y1,Y2,Y3)←(T1,T2,T3);</p><p><b> ?、?goto ②。</b></p><p> 處理明文:將明文的每個字符提取出來將其裝換為數字。進行加密處理,將處理后的數字字符用“+”號相連。其中加密的算法為:求am可如下進行,其中a,m是正整數: </p>
40、<p> 將m表示為二進制形式bk bk-1…b0,即</p><p> m=bk2k+bk-12k-1+…+b12+b0</p><p><b> 因此:</b></p><p> 例如:19=1×24+0×23+0×22+1×21+1×20,所以</p>&
41、lt;p> a19=((((a1)2a0)2a0)2a1)2a1</p><p> 從而可得以下快速指數算法:</p><p><b> c=0; d=1;</b></p><p> For i=k downto 0 d0 {</p><p><b> c=2×c;</b>
42、;</p><p> d=(d×d) mod n;</p><p> if bi=1 then {</p><p><b> c=c+1;</b></p><p> d=(d×a) mod n</p><p><b> }</b></p&
43、gt;<p><b> }</b></p><p><b> return d.</b></p><p> 其中d是中間結果,d的終值即為所求結果。c在這里的作用是表示指數的部分結果,其終值即為指數m,c對計算結果無任何貢獻,算法中完全可將之去掉。</p><p> 解密過程:將“+”連接的數字字符轉
44、換為數字并相加,用密鑰做與加密相同的算法,即可得出明文。</p><p><b> 3.2 流程圖</b></p><p> 圖3-1 生成公鑰和私鑰流程圖 </p><p> 圖3-2 明文加密流程圖</p><p> 圖3-3 密文解密流程圖</p><p><b> 4
45、 代碼編寫</b></p><p> 在RSADlg.h中聲明成員變量:</p><p><b> intm_p;</b></p><p><b> intm_q;</b></p><p><b> intm_n;</b></p>
46、<p> intm_code;</p><p> intm_decode;</p><p> CStringm_dtxt;</p><p> CStringm_etxt;</p><p> CStringm_ptxt;</p><p> 1.產生公鑰和密鑰:</p>
47、<p> void CRSADlg::OnButtonProduce() //產生公鑰和密鑰函數</p><p><b> {</b></p><p> UpdateData(true);</p><p> while(true)</p><p><b> {</b></
48、p><p> srand(time(0));</p><p> m_p = rand() % 100;</p><p> m_q = rand() % 100;</p><p> if (isPrime(m_p) && isPrime(m_q))</p><p><b> break;&
49、lt;/b></p><p><b> }</b></p><p> m_n = m_p * m_q;</p><p> int fiN = (m_p - 1) * (m_q - 1);</p><p><b> //int e;</b></p><p> f
50、or (int i = 3; i < fiN; i++)</p><p><b> {</b></p><p> if (isPrime(i) && gcd(fiN, i) == 1)</p><p><b> {</b></p><p> m_code = i;<
51、;/p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> Euler(m_code, fiN);</p><p> UpdateData(false);</p
52、><p><b> }</b></p><p> 代碼分析:首先設置系統(tǒng)的當前時間為隨機種子,循環(huán)找出p和q并且調用判斷素數的函數isPrime(int)使p,q都為小于100的素數,然后fiN = (m_p - 1) * (m_q - 1)產生fiN,產生m_n = m_p * m_q,通過調用gcd(fiN, i)找出與fiN互素的數m_code,調用uler(m
53、_code, fiN)找出m_decode,最后UpdateData(false)刷新文本框顯示出結果。</p><p><b> 2.加密明文:</b></p><p> void CRSADlg::OnCode() //加密函數</p><p><b> {</b></p><p>
54、 CString temp;</p><p> UpdateData(true);</p><p> CString encSt = "";</p><p> CString e2st = "";</p><p> if (m_ptxt.IsEmpty())</p><p&g
55、t;<b> return;</b></p><p> for (int i = 0; i < m_ptxt.GetLength(); i++)</p><p><b> {</b></p><p> temp = encSt;</p><p> encSt.Format("
56、;%s%d%s",temp,power((int)m_ptxt.GetAt(i), m_code, m_n),"+");</p><p><b> }</b></p><p> m_etxt = encSt;</p><p> UpdateData(false);</p><p>&l
57、t;b> }</b></p><p> 代碼分析:首先判斷明文文本框是否為空,若為空則返回。取出明文的每個字符,將其裝換為數字,通過加密函數power轉換后,生成的數字字符用“+”號相連,即為密文。調用UpdateData(false)刷新文本框,顯示加密后的結果。</p><p><b> 3.解密密文</b></p><
58、p> void CRSADlg::OnDecode() // 解密函數</p><p><b> {</b></p><p><b> int ptr;</b></p><p><b> int tok;</b></p><p> CString temp
59、= "";</p><p> UpdateData(true);</p><p> CString DecSt = "";</p><p> //int t = m_etxt.GetLength();</p><p> for (int i = 0; i < m_etxt.GetLeng
60、th();)</p><p><b> {</b></p><p> ptr = m_etxt.Find("+", i);</p><p> tok = atoi(m_etxt.Mid(i, ptr - i));</p><p> temp = DecSt;</p><p&
61、gt; DecSt.Format("%s%c", temp, char(power(tok, m_decode, m_n)));</p><p> i = i + num(tok) + 1;</p><p><b> }</b></p><p> m_dtxt = DecSt;</p><p>
62、; UpdateData(false);</p><p><b> }</b></p><p> 代碼分析:計算出密文字符串的長度,循環(huán)尋找以字符“+”分隔得數字字符串,并將其轉換問數字,然后調用power函數處理,將得出的數字轉換為字符,將得出的字符連接起來就解密出了明文,最后調用UpdateData(false)刷新文本框,顯示出解密出的結果。</p&
63、gt;<p><b> 4.其他函數:</b></p><p> int CRSADlg::power(int a, int n, int m) //求出a的n次方模m的值</p><p><b> {</b></p><p> int z=1, t;</p><p> fo
64、r(t=a; n>0; n>>=1)</p><p><b> { </b></p><p> if (n%2==1) z=(z*t) % m;</p><p> t=(t*t) % m;</p><p><b> }</b></p><p> r
65、eturn(z);</p><p><b> }</b></p><p> BOOL CRSADlg::isPrime(int x) //判斷整數i是否為素數</p><p><b> {</b></p><p><b> int i;</b></p>
66、<p> for (i = 2; i <= (int)sqrt(x); i++)</p><p><b> {</b></p><p> if (x % i == 0)</p><p><b> break;</b></p><p><b> }</b&g
67、t;</p><p> if (i > (int)sqrt(x))</p><p> return true;</p><p> return false;</p><p><b> }</b></p><p> int CRSADlg::gcd(int a, int b) //
68、求出a與b的公因子</p><p><b> {</b></p><p> if (a == 0)</p><p><b> {</b></p><p><b> return b;</b></p><p><b> }</b&
69、gt;</p><p><b> else</b></p><p><b> {</b></p><p> return gcd(b % a, a);</p><p><b> }</b></p><p><b> }</b&g
70、t;</p><p> void CRSADlg::Euler(int e, int fin) //求出e相對模fin的乘法逆元</p><p><b> {</b></p><p> int u1 = 1;</p><p> int u2 = 0;</p><p> int u3 =
71、 fin;</p><p> int v1 = 0;</p><p> int v2 = 1;</p><p> int v3 = e;</p><p> int v = 1;</p><p> int t1, t2, t3;</p><p><b> int q;<
72、/b></p><p> int uu, vv;</p><p> int inverse, z;</p><p> while (v3 != 0)</p><p><b> {</b></p><p> q = (int)(u3 /v3);</p><p>
73、; t1 = u1 - q * v1;</p><p> t2 = u2 - q * v2;</p><p> t3 = u3 - q * v3;</p><p><b> u1 = v1;</b></p><p><b> u2 = v2;</b></p><p>
74、;<b> u3 = v3;</b></p><p><b> v1 = t1;</b></p><p><b> v2 = t2;</b></p><p><b> v3 = t3;</b></p><p><b> z = 1;&
75、lt;/b></p><p><b> }</b></p><p><b> uu = u1;</b></p><p><b> vv = u2;</b></p><p> if (vv < 0)</p><p> inverse
76、= vv + fin;</p><p><b> else</b></p><p> inverse = vv;</p><p> m_decode = inverse;</p><p><b> }</b></p><p><b> 5 運行與測試&l
77、t;/b></p><p> 5.1 產生公鑰和密鑰</p><p> 點擊密鑰生成,運行效果如下圖:</p><p> 圖5-1 產生公鑰和密鑰效果圖</p><p> 5.2 加密與解密</p><p> 1.點擊加密,運行效果如下圖:</p><p> 圖5-2 加密
78、效果圖</p><p> 2.點擊解密,運行效果如下圖:</p><p> 圖5-3 解密效果圖</p><p><b> 總 結</b></p><p> 通過這次課程設計,我對RSA加密體制有了更進一步的了解。遇到的主要問題是如何將明文按照比特分組并對其實現RSA加密,以及對大素數的處理。最終大素數的處理得以
79、實現,但明文分組并沒有找到合適的方法,這就要求我在課程設計后去學習怎樣為明文分組機密。要想學好現代密碼學不僅要學習好密碼學相關知識,還要有很好的數學基礎,還有很強的編程能力,這個課程設計是用Microsoft Visual C++ 6.0的開發(fā)環(huán)境寫的,這對編程要求很高,不僅要會密碼學中RSA的加密機制,算法還要熟知VC++的編程方法,要對微軟的MFC的基本編程方法要熟悉。課程設計時對學生個人綜合能力的檢驗。任何知識和技術都不是孤立的。
80、要學習好密碼學要牽扯到線性代數,離散數學,概率統(tǒng)計等數學知識,為了驗證加密解密算法的正確性,還要動手編制程序,這就要求學生要對至少一種編程技術有所熟知。對RSA加密體制還可以運用到手機等終端設備的加密,也可嵌入到其他小型化的設備中去,下一步我們講進一步對這些方向進行研究。</p><p><b> 致 謝</b></p><p> 感謝老師給了這次機會給我們做這次
81、課程設計,讓我們能夠把平時所學的東西用上,不至于讓我們覺得平時學的東西沒什么用,在這短短的時間里完成了本次課程設計,要感謝朋友們的幫忙,在我困惑的時候要不是你們,我可能早就放棄了,因為你們的幫忙,我才能順利的完成這次系統(tǒng)。其實最辛苦的還是老師,請允許我向你們說聲謝謝,感謝你們對我們的教誨。</p><p> 在這次課程設計的過程中,我覺得我真的是獲得了很多的東西,不僅僅是動手能力及編程能力得到了很大的提高,也不
82、僅僅是在修改程序錯誤方面,主要是在程序編寫過程中獲得了大量的寶貴的經驗。此外,在這次實踐過程中發(fā)現數據庫是一門十分實用的課程,也體會到學好數據庫對我們以后的學習,工作是十分重要的。因而在此,我要感謝那些在實踐過程中給過我?guī)椭凸膭畹娜恕?lt;/p><p> 最后對所有在課程設計中幫助過我的老師和同學說一聲謝謝。</p><p><b> 參考文獻</b></p
83、><p> 1 楊波.現代密碼學.第2版.北京:清華大學出版社,2008</p><p> 2 谷利澤,鄭世慧,楊義先.現代密碼學教程.北京:北京郵電大學出版社,2009</p><p> 3丁存生,肖國鎮(zhèn).流密碼學及其應用. 北京:國防工業(yè)出版社,1994</p><p> 4馮登國,吳文玲.分組密碼的設計與分析. 北京:清華大學出版社
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論