freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

rsa文件加密的研究和實現(xiàn)--畢業(yè)設計論文-資料下載頁

2024-11-29 11:27本頁面

【導讀】分析RSA算法的應用現(xiàn)狀,論證文件加密應用RSA算法的可行性和意義。套完整實用的RSA文件加密解決方案,具體編碼實現(xiàn)。對RSA算法進行研究,從常規(guī)。RSA算法出發(fā),用C++實現(xiàn)RSA加密算法類庫,并在32位windows平臺封裝成組件。加密的文件以及密鑰文件都是文本文件。給出關鍵類類圖、整個應用程序的結(jié)構(gòu)描述文。檔、關鍵模塊流程圖、較詳細的接口文檔、所有源代碼。對應用程序進行測試,對測試。用程序,和一些相關的可移植組件。

  

【正文】 獨加密保存在可靠的存儲空間內(nèi),以獲得更高的安全性。 表 31 僅能從實驗的角度直觀理解,具體到一次密鑰生成的運算,所需要的時間是很不確定的,比如,一次 1280 位的密鑰生成,需要的時間完全可能比一次 896 位的密鑰生成時間短,由于素數(shù)分布規(guī)律非常奧妙,加上測試運算需要的時間頗長,這里很難給出對于一個具體位數(shù)的密鑰生成所需時間的統(tǒng)計模型。 另外 需要說明的是,表 31 的加密位數(shù)在實際軟件設置時并不嚴格。這是因為,實際作為參數(shù)設置的是兩個大素數(shù)的搜索起點。如果隨機生成的起點整數(shù)大小比較接近更長一位的整數(shù)的話(例如 FFFF 很接近 10000),向后尋找所得到的素數(shù)很可能長出一位。而且,兩個 k 位長的整數(shù)相乘的結(jié)果也未必是 2k位,比如 100*100=10000,相乘結(jié)果是2k1 位。所以,在表 31 實際測試填寫時,加密位數(shù)可能會有幾位的差距,但是這不礙大局。 2. 測試底數(shù) A 對耗時的影響 為了保證生成素數(shù)的成功率, A 至少要有 4 個。如果少于 4 個,則素數(shù)測試失敗 的可能性比較大, 經(jīng)過測試發(fā)現(xiàn) 不可以忽略。 小節(jié)曾經(jīng)提到,如果素數(shù)測試通過了合數(shù),就可能產(chǎn)生錯誤的密鑰,使加密解密操作失敗。所以測試 A 的時候,最少有讓其取 4 個值。而取 6 個值以上,測試算法失敗的概率已經(jīng)非常小,沒有什么實用意義,所畢業(yè)論文(設計) 22 以這里測試 A 從 4 個到 6 個的情況。固定其他變量: n 取 512 位和 1024 位(即素數(shù)搜索起點位數(shù)設置為 32 和 64), NP 取 200, SS 取 1000。從理論上說,對于同樣的起點,素數(shù)測試次數(shù)越多,需要的時間就越長。實際測試結(jié)果如表 32 所示(其中 A 取 4 個的情況直接從表 31 復制數(shù)據(jù), 不再另做測試),表中各項對應的全部測試數(shù)據(jù)見 ,包括兩個作為素數(shù)搜索起點的隨機數(shù)和生成的素數(shù) p、 q 以及 e、 d、 n。 表 32 素數(shù)測試底數(shù) A對密鑰生成時間的影響 A 的設置 測試 5 次 n 為 512bit 時密鑰生成需要的時間 (秒 ) 平均耗間 (秒 ) 2,3,5,7 2,3,5,7,11 2,3,5,7,11,13 A 的設置 測試 5 次 n 為 1024bit 時密鑰生成需要的時間 (秒 ) 平均耗間 (秒 ) 2,3,5,7 2,3,5,7,11 2,3,5,7,11,13 由表 32 可以看出,對于 512bit 密鑰, A 取從 4 個到 6 個,對隨機密鑰的產(chǎn)生時間影響不大。但是對于較長的 1024bit 密鑰, A 取 4 個和 A 取 6 個值,密鑰生成時間產(chǎn)生明顯差距, A 取 6 個值時生成隨機密鑰需要的平均時間比 A 取 4 個值時長數(shù)秒之多。為了同時保證密鑰生成速度和素數(shù)的準確程度,我們在實際使用時取 A 為 5 個值,即 11。 3. 測試小素數(shù)因子個數(shù) NP 對耗時的影響 固定其他變量: A 取 5 個分別為 11, n 取 512 位和 1024 位(即素數(shù)搜索起點位數(shù)設置為 32 和 64), SS 取 1000。測試結(jié)果如表 33 所示。表中各項對應的全部測試數(shù)據(jù)見 ,包括兩個作為素數(shù)搜索起點的隨機數(shù)和生成的素數(shù) p、 q 以及 e、 d、 n。 表 33 小素數(shù)因子個數(shù) NP 對密鑰生成時間的影響 NP 測試 5 次 n 為 512bit 時密鑰生成需要的時間 (秒 ) 平均耗間 (秒 ) 100 200 300 400 500 測試 5 次 n 為 1024bit 時密鑰生成需要的時間 (秒 ) 平均耗間 (秒 ) 100 畢業(yè)論文(設計) 23 200 300 400 500 不同顏色的單元格表示每行中的最大值和最小值 這種顏色代表行中最大值 這種顏色代表行中最小值 由于測試時間漫長,測試的數(shù)據(jù)量比較有限。這里并沒有看出什么明顯的規(guī)律。 而且通過本次測試還可以發(fā)現(xiàn),表 33 中 NP 為 200, n 為 1024bit 測試的一行,變量設置和表 32 中 A 設置為 11, n 為 1024bit 的一行完全一致(對應還有一行 n 為 512bit 的數(shù)據(jù)變量設置一致),但是耗時平均差距相差 4 秒之多( 512bit 的一行差距不到 1 秒)??梢妼τ陂L密鑰,同一種情況測試 5 個數(shù)據(jù)取均值并不能精確的說明問題,除非測試得到的數(shù)據(jù)有很明顯的大幅差距,例如前面兩段測試 n 的位數(shù)和 A 的個數(shù)的耗時影響情況。這里也正是因為前面提到的,對于大整數(shù)來說,可能出現(xiàn)在較長一段區(qū)間中沒有素數(shù)的情況,使得同樣設置的各次密鑰生成耗時的可能范圍很大,再加上大素數(shù)分布規(guī)律奧妙,觀察 5 次測試結(jié)果的均值對于不很明顯的規(guī)律顯得意義 不大。 實際使用中,設置 NP 值為 200。 4. 測試 SS 對耗時的影響 同樣未發(fā)現(xiàn)明顯規(guī)律,在使用中設置 SS 為 1000。 數(shù)據(jù)輸入輸出測試 主要測試文件的輸入輸出性能。實際上就是測試 .Net 基礎類庫中實現(xiàn)文件操作的 中的 StreamReader、 StreamWriter 等類的讀寫性能。直接在 Visual Studio 調(diào)試一個簡單的 C文件讀寫程序,得到本軟件中使用的文件操作方法的執(zhí)行性能。在配置為CPU /UTA133 2M緩存硬盤的 PC 上,讀入一個 100KB的文件僅需要 35 毫秒,寫出一個 100KB的文件需要 29 毫秒。這樣的時間消耗,相對于繁復的 RSA 計算所消耗的時間來說,是完全可以忽略不計的。 加密解密測試 進行對任意文件加密與解密的測試,這里給出幾組從不同角度進行測試的數(shù)據(jù)。下面除了第 3 組測試,其他都是把文件逐字節(jié)進行 RSA 運算,逐字節(jié)加密是本軟件的默認設置。加密時使用的測試文件、各密鑰文件以及加解密后生成的文件可以從以下地址下載: 內(nèi)附說明。 1. 用同樣的密鑰對不同大小的文件公鑰加密、私鑰解密,各自消耗的時間與待加密文件大小的關系 隨機生成兩組密鑰,一組 n 長 512bit,一組 n 長 1024bit。密鑰具體數(shù)據(jù)見附錄( n的實際位數(shù)有微小差距)。 畢業(yè)論文(設計) 24 分別對一組不同大小的文件進行公鑰加密。統(tǒng)計消耗時間情況如表 34 所示,統(tǒng)計數(shù)據(jù)以曲線表示如圖 31。 表 34 待加密文件大小與加密時間的關系 (時間單位:秒 ) n位數(shù) 文件大小 50Byte 100Byte 150Byte 200Byte 250Byte 512bit 公鑰加密 512bit 私鑰解密 1024bit 公鑰加密 1024bit 私鑰解密 圖 31 文件大小 加密時間曲線 (逐字節(jié) ) 從表 34 以及圖 31 可以看出,使用同一公開密鑰加密不同大小的文件,消耗時間隨著文件大小的增加線性的增加,和 小節(jié)分析的完全一致。對于較大的文件,加密位數(shù)對時間的影響十分明顯。對于 250 字節(jié)的文件來說, 1024bit 的公鑰加密比 512bit的耗時多 倍左右; 1024bit 的私鑰解密比 512bit 的耗時多 3 倍以上。對于一定的加密位數(shù)來說,私鑰解密所需要的時間比公鑰加密需要的時間長。對于 一定大小的文件,使用 512bit 的密鑰,私有密鑰解密需要的時間是公開密鑰加密需要時間的 2 倍左右;而如果使用 1024bit 的密鑰,私有密鑰解密需要的時間是公開密鑰加密需要時間的 3 倍以上。畢業(yè)論文(設計) 25 再測試幾個 1280bit 的密鑰加解密,發(fā)現(xiàn)私有密鑰解密所需要的時間相對于公鑰加密時間更長??梢姡拒浖荑€長度越長,私有密鑰解密與公開密鑰加密的耗時比越大,這和其他軟件是一致的。因為根據(jù) PCKS 1 的 RSA 的應用建議, e 是比較短的,而 d 和 n的長度差不多,這就使得求與 d、 n 有關的冪模運算量比與 e、 n 有關的冪模運算量大很多,而且 隨著 n 的增加,兩組冪模運算的運算量差距也迅速加大。為了減少 d、 n 冪模運算的時間消耗,考慮到使用中國余數(shù)定理分解簡化運算,具體做法見 節(jié)。 2. 用同樣的密鑰對不同大小的文件公鑰加密,加密后生成的文件大小與待加密文件大小的關系 在上一組測試進行完之后,我們得到了一些加密文件,下面詳細分析這些加密后生成的文本文件大小。表 35 給出了加密后的各文件大小。 表 35 本軟件生成的加密文件大小測試 (文件大小單位: Byte) n位數(shù) 文件大小 50Byte 100Byte 150Byte 200Byte 250Byte 512bit 公鑰加密 6,557 12,977 19,397 25,817 32,237 1024bit 公鑰加密 12,986 25,835 38,684 51,533 64,382 從表 35 的數(shù)據(jù)可以發(fā)現(xiàn),對于同樣的文件進行加密,使用 1024bit 密鑰加密所得到的文件大小是使用 512bit 加密的 2 倍左右。而且不論用哪組密鑰進行加密,加密所生成的文件大小都比原來未加密的文件大??梢詮膬蓚€角度來理解文件在加密后增大:( 1) 因為模數(shù) n 通常較大,所以加密冪模運算的結(jié)果通常很大,這使得逐字節(jié)加密時 ,密文比明文長很多。( 2) 因為加密完以后保存成十六進制文本,對于十六進制文本來說,每字節(jié)可能出現(xiàn)的字符只有 16 個,所以字節(jié)熵是 4bit;而對于任意數(shù)據(jù)來說,每字節(jié)的熵是8bit。所以同樣的信息量,采用十六進制文本要比原始數(shù)據(jù)大一倍。從更簡單的角度理解,每字節(jié)表示為兩位十六進制,每位十六進制在文本中是一個符號,占用 1 字節(jié),所以長度大了一倍。 從表 35 的數(shù)據(jù)還可以看出,對于同樣的密鑰,隨著原始文件大小的線性增長,加密后的文件大小也基本呈線性增長。在使用 512bit 加密時,加密后的文件大小是加密前數(shù)據(jù)大小的 130 倍左右;在使用 1024bit 加密時,加密后文件大小是加密前數(shù)據(jù)大小的260 倍左右。根據(jù)這些數(shù)據(jù),可以總結(jié)出本軟件使用的加密方式,加密前后文件大小的近似換算公式如下: 1 0 24260 NAB ??? , 其中 A 是待加密文件數(shù)據(jù)長度, B 是加密后文件長度, N 是 RSA 加密位數(shù), N8。 以上公式其實也可以從理論上得到,因為模數(shù) n 取 8 位時,冪模運算的結(jié)果仍然近似為 8 位,這時一個字節(jié)的數(shù)據(jù)經(jīng)過加密,得到的數(shù)據(jù)大小近似不變,轉(zhuǎn)換成十六進制文本,大小就增加了 1 倍。按此原理,冪模運算結(jié)果長度近似為加密模數(shù) n 的長度,加密后數(shù)據(jù)長度是加密前的 N/8 倍( N 是加密位數(shù)),而轉(zhuǎn)換為十六進制文本后長度又增大1 倍,加密后得到的文本長度就是加密前原始數(shù)據(jù)大小的 N/4 倍,所以 B=A N/4,這與畢業(yè)論文(設計) 26 前面從實驗結(jié)果總結(jié)得到的公式基本一致,可以把公式中的 260 修正為更精確一些的256。 3. 以多字節(jié)為步長,對文件進行加密 默認的設置是加密時逐個字節(jié)進行 RSA 運算,可以通過設置窗體把分塊的大小更改為其他長度,比如 2 字節(jié)一組、 4 字節(jié)一組,進行 RSA 運算。下面測試多字節(jié)為步長的加密執(zhí)行效率。取一個 480 字節(jié)長的文件作為加密對象,對其進行 512bit RSA 公鑰加密、私鑰解密還原,記錄所消耗的時間。統(tǒng)計數(shù)據(jù)如表 36 所示。 表 36 加密分段大小改變對效率的影響測試 (消耗時間單位:秒 ) 加密方式 步長 2 字節(jié) 4 字節(jié) 6 字節(jié) 8 字節(jié) 10 字節(jié) 512bit 公鑰加密 512bit 私鑰解密 可見,增大加密步長使加密解密速度大幅增加,而且大步長的加密生成的文本文件體積也比小步長的小。這都是 因為增大了步長后,文件被分成的塊數(shù)少了,冪模運算次數(shù)下降。所以在使用 RSA 加密時,設置使用合適的數(shù)據(jù)分塊也是提高加密速度的關鍵。 4. 在更快的 PC,對進行文件加密測試 在一些性能更好的 PC 上,本軟件可以獲得更好的性能,測試數(shù)據(jù)同樣可以分析得到以上段落敘述的結(jié)論。下面對照表 34,給出一組其他 PC 上同樣的測試得到的數(shù)據(jù),測試 PC 配置為 CPU AMD Athron2800+,外頻 333MHZ,物理內(nèi)存 512MB。數(shù)據(jù)見表37。 表 37 待加密文件大小與加密時間的關系再次測試 (時間單位:秒 ) n位數(shù) 文件 大小 50Byte 100Byte 150Byte 200Byte 250Byte 512bit 公鑰加密 512bit 私鑰解密 1024bit 公鑰加密 1024bit 私鑰解密 對于這組數(shù)據(jù),表 34 后的推理分析仍都成立。在此 PC 測試填寫表 36,同樣得到了類似規(guī)律的數(shù)據(jù),在此不再羅列。經(jīng)過一系列各種機型、各種 Windows 操作系統(tǒng)(包括 Windows XP/2020SP4/ME/98,均需 .Net 框架)上的測試,本軟件均能正常運行。在2020 年初主流配置的 PC 上運行此軟件,逐字節(jié)加密 1KB 大小的文件,消耗時間
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1