rsa的快速實現

ID:798422

大小:714.03 KB

頁數:31頁

時間:2017-09-05

rsa的快速實現_第1頁
rsa的快速實現_第2頁
rsa的快速實現_第3頁
rsa的快速實現_第4頁
rsa的快速實現_第5頁
資源描述:

《rsa的快速實現》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。

1、[三、RSA的快速實現]華中科技大學密碼學課程設計報告RSA算法簡介:RSA算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制?! ≡诠_密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然秘密密鑰SK是

2、由公開密鑰PK決定的,但卻不能根據PK計算出SK。正是基于這種理論,1978年出現了著名的RSA算法,它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網絡服務器中注冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統(tǒng)加密方法與公開密鑰加密方法相結合的方式,即信息采用改進的DES或IDEA對話密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密并可

3、核對信息摘要?! SA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現在的三十多年里,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數的因子分解,但并沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向于因子分解不是NPC問題。RSA的缺點主要有:A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。B)分組長度

4、太大,為保證安全性,n至少也要600bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數量級;且隨著大數分解技術的發(fā)展,這個長度還在增加,不利于數據格式的標準化。目前,SET(SecureElectronicTransaction)協(xié)議中要求CA采用2048bits長的密鑰,其他實體使用1024比特的密鑰。C)RSA密鑰長度隨著保密級別提高,增加很快。實驗目的:通過實際編程加深對RSA算法加密、脫密和密鑰產生過程的理解。實驗原理:1.大數存儲和四則運算根據RSA算法的要求,為了實現大數的各種復

5、雜運算,需要首先實現大數存儲和基本四則運算的功能。當今開源的大數運算C++類有很多,多用于數學分析、天文計算等,本文選用了一個流行的大數類型,并針對RSA算法和本項目的具體需要對其進行了擴充和改進。下面簡單介紹大數存儲和四則運算的實現原理。最先完成的功能是大數的存儲,存儲功能由flex_unit類提供。和普通的類型一樣,每一個大數對應一個flex_unit的實例。類flex_unit中,用一個無符號整數指針unsigned*a指向一塊內存空間的首地址,這塊內存空間用來存儲一個大數,所以可以說,大數是被存儲在一

6、個以unsigned為單元的線性組中。在方法voidreserve(unsignedx)中通過C++的new來給a開辟空間,當flex_unit的實例中被存入比當前存儲的數更大的數時,就會調用reserve來增加存儲空間,但是當flex_unit的實例中被存入比當前存儲的數更小的數時,存儲空間并不會自動緊縮,這是為了在運算的時候提高執(zhí)行效率。結合指針a,有兩個重要的無符號整數來控制存儲,unsignedz和unsignedn,z是被分配空間的單元數,隨數字變大不斷增大,不會自己緊縮,而n是當前存儲的大數所占的

7、單元數,組成一個大數的各unsigned單元的存入和讀出由set、get方法完成,變量n是只讀的。類型unsigned在32位機是32位的,所以對于flex_unit這個大數類來說,每個大數最大可以達到個字節(jié)長,這已經超過了32位機通常的最大內存容量,所以是足夠進行RSA所需要的各種運算的。圖3-2形象的說明了大數存儲類flex_unit對大數的管理。*aunsigned類型的指針大數占n個單元開辟了z個單元大的內存內存空間圖3-2flex_unit對大數的管理在flex_unit的存儲功能基礎上,將其派生,

8、得到vlong_value,在vlong_value中實現四則運算函數,并實現強制轉換運算符unsigned,以方便大數類型和普通整數的互相賦值。當大數被強制轉換為unsigned時,將取其最低四字節(jié)的值。四則運算實現的原理十分簡單,都是按最基本的算術原理實現的,四則運算過程的本質就是按一定數制對數字的計算,比如相加,就是低位單元對齊,逐單元相加并進位,減法同理。而乘除法和取余也都是按照豎式運算的原

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。
关闭