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

正文內(nèi)容

基于硬盤序列號(hào)和rsa算法的軟件加密系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文-資料下載頁

2024-11-29 11:02本頁面

【導(dǎo)讀】活中的各個(gè)角落。但是由于計(jì)算機(jī)軟件易于復(fù)制,所以隨之而來的便是盜版軟件的泛。這使軟件開發(fā)人員蒙受了巨大的經(jīng)濟(jì)和社會(huì)損失,防止軟件盜版最行之有效的方。法就是對(duì)軟件進(jìn)行有效的加密。相關(guān)技術(shù)分析和當(dāng)前流行的加密算法詳細(xì)研究?;谝陨侠碚摶A(chǔ),將本設(shè)計(jì)的基于。接庫的好處是可以采用多種編程語言來編寫,增強(qiáng)產(chǎn)品的功能,提供二次開發(fā)的平臺(tái),的本地計(jì)算機(jī)硬盤物理序列號(hào)對(duì)比,驗(yàn)證注冊(cè)碼的合法性。加密解密使用非對(duì)稱密鑰。1024位時(shí),破解難度極大,所以使用RSA算法加密確保了軟件的安全性。而保證了注冊(cè)碼的唯一性。經(jīng)過調(diào)試和測(cè)試的驗(yàn)證,本設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,性能可靠,操。本設(shè)計(jì)在軟件保護(hù)行業(yè)有著廣泛的使用價(jià)值,如在軟件防盜中,用作注冊(cè)碼

  

【正文】 置、預(yù) 定義常量、輸出結(jié)果類型等)。工程類型中,其中有一個(gè)為“ MFC AppWizard( exe)”如圖 所示,它是我們本設(shè)計(jì)要掌握的、用來編制具有可視化窗體界面運(yùn)行 C++程序的工程。 圖 Visual C++ 桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 16 MFC 程序開發(fā)流程 MFC 介紹 MFC,微軟基礎(chǔ)類 (Microsoft Foundation Classes),同 VCL 類似,是一種Application Framework,隨微軟 Visual C++ 開發(fā)工具發(fā)布。目前最新版本為 (截止 2020 年 11 月)。該類庫提供一組通用的可重用的類庫供開發(fā)人員使用。大部分類均從 CObject 直接或間接派生,只有少部分類例外。 MFC 應(yīng)用程序的總體結(jié)構(gòu)通常由開發(fā)人員從 MFC 類派生的幾個(gè)類和一個(gè) CWinApp 類對(duì)象(應(yīng)用程序?qū)ο螅┙M成。 MFC 提供了 MFC AppWizard 自動(dòng)生成框架。 Windows 應(yīng)用程序中, MFC 的主包含文件為。此外 MFC 的部分類為 MFC/ATL 通用,可以在 Win32 應(yīng)用程序中單獨(dú)包含并使用這些類。由于它的易用性,初學(xué)者常誤認(rèn)為 VC++開發(fā)必須使 用 MFC。這種想法是錯(cuò)誤的。作為 Application Framework, MFC 的使用只能提高某些情況下的開發(fā)效率,只起到輔助作用,而不能替代整個(gè) Win32 程序設(shè)計(jì)。 MFC 特點(diǎn) MFC,微軟基礎(chǔ)類 (Microsoft Foundation Classes),實(shí)際上是微軟提供的 ,用于在C++環(huán)境下編寫應(yīng)用程序的一個(gè)框架和引擎 ,VC++是 WinDOS下開發(fā)人員使用的專業(yè) C++ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)軟件開發(fā)平臺(tái) ),MFC 就是 掛在它之上的一個(gè)輔助軟件開發(fā)包 ,MFC 作為與 VC++血肉相連的部分 (注意 C++和 VC++的區(qū)別 :C++是一種程序設(shè)計(jì)語言 ,是一種大家都承認(rèn)的軟件編制的通用規(guī)范 ,而 VC++只是一個(gè)編譯器 ,或者說是一種編譯器 +源程序編輯器的 IDE,WS,PlatForm,這跟 Pascal 和 Delphi的關(guān)系一個(gè)道理 ,Pascal 是 Delphi 的語言基礎(chǔ) ,Delphi 使用 Pascal 規(guī)范來進(jìn)行 Win下應(yīng)用程序的開發(fā)和編譯 ,卻不同于 Basic 語言和 VB的關(guān)系 ,Basic 語言在 VB 開發(fā)出來被應(yīng)用的年代已經(jīng)成了 Basic語言的新規(guī)范 ,VB新加的 Basic 語言要素 ,如面向?qū)ο蟪绦蛟O(shè)計(jì)的要素 ,是一種性質(zhì)上的飛躍 ,使 VB 既是一個(gè) IDE,又成長(zhǎng)成一個(gè)新的程序設(shè)計(jì)語言 ),MFC 同 BC++集成的 VCL 一樣是一個(gè)非外掛式的軟件包 ,類庫 ,只不過 MFC 類是微軟為 VC++專配的。 MFC 是 Win API 與 C++的結(jié)合 ,API,即微軟提供的 WinDOS 下應(yīng)用程序的編程語言接口 ,是一種軟件編程的規(guī)范 ,但不是一種程序開發(fā)語言本身 ,可以允許用戶使用各種各樣的第三方 (如我是一方 ,微軟是一方 ,Borland 就是第三方 )的編程語言來進(jìn)行對(duì) WinDOS 下應(yīng)用程序的開發(fā) ,使這 些被開發(fā)出來的應(yīng)用程序能在 WinDOS下運(yùn)行 ,比如 VB,VC++,Java,Dehpi編程語言函數(shù)本質(zhì)上全部源于 API,因此用它們開發(fā)出來的應(yīng)用程序都能工作在 WinOS 的消息機(jī)制和繪圖里 ,遵守 WinDOS 作為一個(gè)操作系統(tǒng)的內(nèi)部實(shí)現(xiàn) ,這其實(shí)也是一種必要 ,微軟如果不提供 API,這個(gè)世上對(duì) Win編程的工作就不會(huì)存在 ,微軟的產(chǎn)品就會(huì)迅速從時(shí)尚變成垃圾 ,上面說到 MFC 是微軟對(duì) API 函數(shù)的桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 17 專用 C++封裝 ,這種結(jié)合一方面讓用戶使用微軟的專業(yè) C++ SDK 來進(jìn)行 Win 下應(yīng)用程序的開發(fā)變得容易 ,因?yàn)?MFC 是對(duì) API 的封裝 ,微 軟做了大量的工作 ,隱藏了好多程序開發(fā)人員在 Win 下用 C++ amp。 MFC 編制軟件時(shí)的大量?jī)?nèi)節(jié) ,如應(yīng)用程序?qū)崿F(xiàn)消息的處理 ,設(shè)備環(huán)境繪圖 ,這種結(jié)合是以方便為目的的 ,必定要付出一定代價(jià) (這是微軟的一向作風(fēng) ),因此就造成了 MFC對(duì)類封裝中的一定程度的的冗余和迂回 ,但這是可以接受的。 最后要明白 MFC 不只是一個(gè)功能單純的界面開發(fā)系統(tǒng) ,它提供的類絕大部分用來進(jìn)行界面開發(fā) ,關(guān)聯(lián)一個(gè)窗口的動(dòng)作 ,但它提供的類中有好多類不與一個(gè)窗口關(guān)聯(lián) ,即類的作用不是一個(gè)界面類 ,不實(shí)現(xiàn)對(duì)一個(gè)窗口對(duì)象的控制 (如創(chuàng)建 ,銷毀 ),而是一些 在WinDOS(用 MFC 編寫的程序絕大部分都在 WinDOS 中運(yùn)行 )中實(shí)現(xiàn)內(nèi)部處理的類 ,如數(shù)據(jù)庫的管理類等 ,學(xué)習(xí)中最應(yīng)花費(fèi)時(shí)間的是消息和設(shè)備環(huán)境 ,對(duì) C++和 MFC 的學(xué)習(xí)中最難的部分是指針 ,C++面向?qū)ο癯绦蛟O(shè)計(jì)的其它部分 ,如數(shù)據(jù)類型 ,流程控制都不難 ,建議學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu) C++版。 MFC 是微軟封裝了的 API。什么意思呢? windows 作為一個(gè)提供功能強(qiáng)大的應(yīng)用程序接口編程的操作系統(tǒng),的確方便了許多程序員,傳統(tǒng)的 win32開發(fā)(直接使用 windows的接口函數(shù) API)對(duì)于程序員來說非常的困難,因?yàn)椋?API 函數(shù)實(shí)在太多了,而且名稱很亂,從零構(gòu)架一個(gè)窗口動(dòng)輒就是上百行的代碼。 MFC 是面向?qū)ο蟪绦蛟O(shè)計(jì)與Application framework 的完美結(jié)合,他將傳統(tǒng)的 API 進(jìn)行了分類封裝,并且為你創(chuàng)建了程序的一般框架。 MFC 是對(duì) WindowsAPI 的封裝,大大簡(jiǎn)化了我們的工作;學(xué) VC主要就是要學(xué) MFC,大約有 100 多個(gè)類,但常用的也就二三十個(gè)。應(yīng)該象背 4級(jí)單詞一樣將這些常用類搞懂;當(dāng)然不要死記,要通過看幫助、看例子、動(dòng)手練習(xí)來學(xué)會(huì)它們;而且,并非每個(gè)類的內(nèi)部的所有函數(shù)都要學(xué)會(huì),要日積月累。如果真 的想成為高手,做個(gè)筆記本把自己認(rèn)為重要的類、函數(shù)記下來,隨時(shí)學(xué)習(xí),也是很好的突擊方法。 MFC 基于事件驅(qū)動(dòng)的程序設(shè)計(jì) MFC 是基于事件驅(qū)動(dòng)的程序設(shè)計(jì),事件的產(chǎn)生有操作輸入設(shè)備,如鍵盤和鼠標(biāo);點(diǎn)擊屏幕上可視的對(duì)象,如菜單、工具欄按鈕、滾動(dòng)條和對(duì)話框上的控件;來自 Windows內(nèi)部,如當(dāng)一個(gè)后面的窗口顯示到前面來時(shí)?;谑录?qū)動(dòng)的程序模型如圖 所示。 桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 18 . . N . Y 圖 支持隊(duì)列特征的消息驅(qū)動(dòng)模型 Windows 程序的消息處理過程 Windows 程序的消息處理過程首先是 application 都有其對(duì)應(yīng)的 window procedure,當(dāng)窗口顯現(xiàn)出來以后,對(duì)窗口所做的操作就會(huì)作為消息傳遞給application,而 application 就用 GetMessage() 函數(shù)來接收,接著 application 則必須對(duì)消息進(jìn)行分析,這使用 TranslateMessage()來實(shí)現(xiàn),接著 application 就要把分析后的消息傳遞給此 application 的 window procedure,即 lpfnWndProc 所指定的處理過程,要使用 DispatchMessage() 來實(shí)現(xiàn),而 window procedure 則會(huì)根據(jù)收到的消息作出具體的措施。到此為止已經(jīng)形成了一個(gè)完整的消息處理循環(huán),其形式如下所示: while( GetMessage(amp。Msg, NULL, 0, 0) ){ TranslateMessage(amp。Msg)。 DispatchMessage(amp。Msg)。 } 這便是典型的 windows 應(yīng)用程序的消息處理與傳遞機(jī)制。 Windows 程序和消息的基本流程如圖 。 程序開始 捕獲消息 派發(fā)消息 消息源 1 消息源 2 消息源 n 處理消息 退出消息 ? 程序結(jié)束 桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 19 N Y Y N 圖 Windows程序和消息的基本流程 MFC ( Microsoft Foundation Class,微軟基礎(chǔ)類庫 ) 是基于 Win32 API 的 C++類庫集,它 提供了管理窗口、菜單、對(duì)話框等大量可重用代碼,隱藏了程序設(shè)計(jì)中的許多復(fù)雜工作,是用戶能夠較為輕松地開發(fā)出標(biāo)準(zhǔn)的 Wingdows 應(yīng)用程序。 MFC 按照 C++類的層次形式進(jìn)行組織,層次較高的類提供一般的功能,層次較低的類從層次較高的類派生而來,繼承了高層次類的行為,實(shí)現(xiàn)更為具體的功能。 MFC用 C++類對(duì)大多數(shù) Win32 API 函數(shù)進(jìn)行了封裝,使程序員的開發(fā)工作變得更加容易。MFC 提供的基于文檔 /視圖(簡(jiǎn)稱 Doc/View)的應(yīng)用程序開發(fā)模型,是將應(yīng)用程序數(shù)據(jù)與用戶界面元素分離的編程方法,使得更改其中一部 分程序時(shí)不必大量更改另一部分程序。 程序設(shè)計(jì)流程圖 本系統(tǒng)程序采用 MFC 編程,整個(gè)系統(tǒng)分為兩個(gè)部分,軟件使用方的客戶端程序和軟件開發(fā)方的注冊(cè)機(jī)程序,客戶端程序通過訪問硬盤信息,獲取硬盤物理序列號(hào),然后通過 Email 等方式發(fā)給軟件開發(fā)方,軟件開發(fā)方通過自己的注冊(cè)機(jī)把獲取到的硬盤物理序列號(hào)加密生成注冊(cè)碼,加密使用 RSA 非對(duì)稱加密算法的私鑰 K,軟件開發(fā)方把生成的注冊(cè)號(hào) R 返回給軟件使用者,軟件使用方根據(jù)得到的注冊(cè)碼,通過使用 RSA非對(duì)稱加密算法的公鑰 p 解密,把解密出來的字符串和本機(jī)的硬盤物 理序列號(hào)進(jìn)行對(duì)開始執(zhí)行 初始化 終止執(zhí)行 從消息隊(duì)列 取得一個(gè)消息 當(dāng)前消息是否“退出”消息? 是否本程序要處理的消息? 默認(rèn)處理 處理消息 桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 20 比匹配,若相同則注冊(cè)成功,否則注冊(cè)失敗。整個(gè)流程圖如圖 所示。 軟件使用方 軟件開發(fā)方 否 是 圖 本系統(tǒng)設(shè)計(jì)流程圖 大進(jìn)制數(shù)及其運(yùn)算類定義 大數(shù)類的詳細(xì)描述 RSA 依賴大數(shù)運(yùn)算,目前主流 RSA 算法都建立在 512位到 1024位的大數(shù)運(yùn)算之上,所以我們?cè)诂F(xiàn)階段首先需要掌握 1024位的大數(shù)運(yùn)算原理。 大 多數(shù)的編譯器只能支持到 64位的整數(shù)運(yùn)算,即我們?cè)谶\(yùn)算中所使用的整數(shù)必須小于等于 64位,即: 0xffffffffffffffff 也就是 18446744073709551615,這遠(yuǎn)遠(yuǎn)達(dá)不到 RSA 的需要,于是需要專門建立大數(shù)運(yùn)算庫來解決這一問題。最簡(jiǎn)單的辦法是將大數(shù)當(dāng)作字符串進(jìn)行處理,也就是將大數(shù)用 10進(jìn)制字符數(shù)組進(jìn)行表示,然后模擬人們手工進(jìn)行 “ 豎式計(jì)算 ” 的過程編寫其加減乘除函數(shù)。但是這樣做效率很低,因?yàn)?1024位的大數(shù)其 10進(jìn)制數(shù)字個(gè)數(shù)就有數(shù)百個(gè),對(duì)于任何一種運(yùn)算,都需要在兩個(gè)有數(shù)百個(gè)元素的數(shù)組空間上做多重循 環(huán),還需要許多額外的空間存放計(jì)算的進(jìn)位退位標(biāo)志及中間結(jié)果。當(dāng)然 其 優(yōu)點(diǎn)是算法符合人們的日常習(xí)慣,易于理解。另一種思路是將大數(shù)當(dāng)作獲取硬盤序列號(hào) S 模數(shù) n 私有密鑰 k RSA加密算法 注冊(cè)號(hào) R 公有密鑰 p 模數(shù) n RSA解密算法 解密值 S 注冊(cè)失 敗 注冊(cè)成功 匹配 桂林理工大學(xué)本科畢業(yè)設(shè)計(jì)論文 21 一個(gè)二進(jìn)制流進(jìn)行處理,使用各種移位和邏輯操作來進(jìn)行加減乘除運(yùn)算,但是這樣做代碼設(shè)計(jì)非常復(fù)雜,可讀性很低,難以理解也難以調(diào)試。 于是 選取了 一種介于兩者之間的思路:將大數(shù)看作一個(gè) n 進(jìn)制數(shù)組,對(duì)于目前的32位系統(tǒng)而言 n 可以取值為 2的 32次方,即 0x100000000,假如將一個(gè) 1024位的大數(shù)轉(zhuǎn)化成 0x100000000進(jìn)制,它就變成了 32位,而每一位的取值范圍就不是 01或 09,而是 00xffffffff。我們正好可以用一個(gè)無符號(hào)長(zhǎng)整數(shù)來表示這一數(shù)值。所以 1024位的大數(shù)就是一個(gè)有 32個(gè)元素的 unsigned long 數(shù)組。而且 0x100000000進(jìn)制的數(shù)組排列與 2進(jìn)制流對(duì)于計(jì)算機(jī)來說,實(shí)際上是一回事,但是我們完全可以針對(duì) unsigned long數(shù)組進(jìn)行 “ 豎式計(jì)算 ” ,而循環(huán)規(guī)模被降低到了 32次之內(nèi),并且算法很容易理解。 大數(shù)類的類定義 本設(shè)計(jì)在使用 RSA 算法加密時(shí)會(huì)遇到大整數(shù)的運(yùn)算, VC++自帶的數(shù)據(jù)結(jié)構(gòu)無法滿足 1024 位加密運(yùn)算的需求,根據(jù)以上大數(shù)運(yùn)算 的原理,于是定義了一個(gè)大數(shù)類,使其能完成大整數(shù)的計(jì)算。自定義的大數(shù) CBigInt 類為 0x100000000 進(jìn)制,同時(shí)根據(jù)十進(jìn)制的基本運(yùn)算法則為大數(shù)類定義了基本的運(yùn)算成員函數(shù),例如加減乘除等等,具體定義見以下代碼。 class CBigInt{ public: unsi
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1