![注冊(cè)碼RSA非對(duì)稱算法_第1頁](http://file4.renrendoc.com/view/3b7cdfdd644db0f72c65f104d27b1da9/3b7cdfdd644db0f72c65f104d27b1da91.gif)
![注冊(cè)碼RSA非對(duì)稱算法_第2頁](http://file4.renrendoc.com/view/3b7cdfdd644db0f72c65f104d27b1da9/3b7cdfdd644db0f72c65f104d27b1da92.gif)
![注冊(cè)碼RSA非對(duì)稱算法_第3頁](http://file4.renrendoc.com/view/3b7cdfdd644db0f72c65f104d27b1da9/3b7cdfdd644db0f72c65f104d27b1da93.gif)
![注冊(cè)碼RSA非對(duì)稱算法_第4頁](http://file4.renrendoc.com/view/3b7cdfdd644db0f72c65f104d27b1da9/3b7cdfdd644db0f72c65f104d27b1da94.gif)
![注冊(cè)碼RSA非對(duì)稱算法_第5頁](http://file4.renrendoc.com/view/3b7cdfdd644db0f72c65f104d27b1da9/3b7cdfdd644db0f72c65f104d27b1da95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于RSA算法實(shí)現(xiàn)軟件注冊(cè)碼原理初討1刖言目前,商用軟件和共享軟件絕大部份都是采用注冊(cè)碼授權(quán)的方式來保證軟件本身不被盜用,以保證自身的利益。盡管很多常用的許多軟件系統(tǒng)的某些版本已經(jīng)被別人破解,但對(duì)于軟件特殊行業(yè)而言,注冊(cè)碼授權(quán)的方式還是一種保護(hù)軟件系統(tǒng)本身的一種有效的手段。通常而言,注冊(cè)碼授權(quán)方式有以下幾種方式:?安裝序列號(hào)方式:這是最為常用的方式,Mircosoft提供的產(chǎn)品(例如:Windows系列產(chǎn)品、Office系列產(chǎn)品等等)都是采用這種方式。通過一種復(fù)雜的算法生成安裝序列號(hào),在安裝過程中,安裝程序?qū)τ脩糨斎氲陌惭b序列號(hào)進(jìn)行校驗(yàn)來驗(yàn)證該系統(tǒng)是否被合法,從而完成授權(quán)。?用戶名+序列號(hào)方式:即軟件系統(tǒng)的供應(yīng)商給用戶提供有效的用戶名和序列號(hào),用戶在安裝過程或啟動(dòng)過程中輸入有效的用戶名和序列號(hào),系統(tǒng)通過算法校驗(yàn)通過后完成軟件授權(quán)。?在線注冊(cè)方式:用戶安裝系統(tǒng)后,通過網(wǎng)絡(luò)進(jìn)行注冊(cè)授權(quán)。軟件系統(tǒng)的供應(yīng)商事先已經(jīng)登記了用戶的信息,用戶在線注冊(cè)時(shí),供應(yīng)商的注冊(cè)系統(tǒng)對(duì)用戶的信息進(jìn)行驗(yàn)證。用戶身份有效時(shí),注冊(cè)系統(tǒng)生成一個(gè)憑證信息,軟件系統(tǒng)根據(jù)憑證信息完成授權(quán)。?激活碼方式:用戶安裝系統(tǒng)后,軟件系統(tǒng)會(huì)根據(jù)用戶機(jī)器的關(guān)鍵信息(例如:MAC地址、CPU序列號(hào)、硬盤序列號(hào)等等)生成一個(gè)注冊(cè)憑證(也可稱為注冊(cè)碼),用戶將這個(gè)注冊(cè)憑證發(fā)送給軟件供應(yīng)商,供應(yīng)商通過注冊(cè)憑證生成一個(gè)激活碼。用戶輸入激活碼,軟件系統(tǒng)完成授權(quán)。不論是采用哪種方式來進(jìn)行授權(quán),理論上都是可以被破解的。只要破解者發(fā)現(xiàn)了軟件授權(quán)機(jī)制和原理則任何保護(hù)機(jī)制都將化為烏有。因此,只能夠通過選擇復(fù)雜的算法和機(jī)制來增加破解者的破解難度,從而在在一定的時(shí)間內(nèi)保證軟件不被盜用。RSA算法(非對(duì)稱加密算法)是一個(gè)廣泛用于加密和數(shù)字簽名的算法,可以適用用戶名+序列號(hào)、在線注冊(cè)、激活碼等軟件保護(hù)方式2RSA算法介紹RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA也是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià),即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士?jī)A向于因子分解不是NPC問題。RSA的缺點(diǎn)主要有:(一) 產(chǎn)生密鑰很麻煩,受到素?cái)?shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。(二) 分組長(zhǎng)度太大,為保證安全性,n至少也要600bits以上,使運(yùn)算代價(jià)很高,尤其是速度較慢,較對(duì)稱密碼算法慢幾個(gè)數(shù)量級(jí);且隨著大數(shù)分解技術(shù)的發(fā)展,這個(gè)長(zhǎng)度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。但RSA的缺點(diǎn)對(duì)軟件注冊(cè)碼而言都不是問題,因?yàn)檐浖?cè)機(jī)可以選擇一個(gè)已知的素?cái)?shù)來生成公鑰和私鑰。至于運(yùn)算代價(jià)很高的問題而言也不是問題,因?yàn)樽?cè)憑證信息量是很小的。RSA理論的數(shù)學(xué)基礎(chǔ)是數(shù)論中的歐拉定理,基本原理如下:(一) 取兩個(gè)相近的大素tp>q;(二) 計(jì)算n=p*q,z=(p-1)*(q-1);(三) 任取一個(gè)與z互素的整數(shù)e;(四) 計(jì)算滿足e*d=1modz的整數(shù)d;(五) 將明文m分成字符塊s加密,每個(gè)塊s小于n。(六) 加密:c=m^emodn;解密:m=cAdmodn(七) (n,e)和(n,d)分別稱為"公開密鑰”和"秘密密鑰”。根據(jù)Euler定理可得:m=cAdmodn=(mAemodn)Admodn=m;舉例說明:(一) 取兩個(gè)素?cái)?shù)p=11和q=13(二) 計(jì)算n=p*q=11*13=143,z=(p-1)*(q-1)=(11-1)*(13-1)=120(三) 選取與z=120互素的整數(shù)e,如e=7,現(xiàn)可計(jì)算出滿足7*d=1mod120的整數(shù)d=103,即:7*103=1mod120、7*103/120余1,(四)整理如下:p=11、q=13、n=143、e=7、d=103(五)得出公鑰(n,e)=(143,7)和私鑰(n,d)=(143,103)以數(shù)據(jù)加密為例:(一)甲向乙發(fā)送機(jī)密數(shù)據(jù)信息m=85,并已知乙的公鑰(n,e)=(143,7),于是可計(jì)算得出:c=mAemodn=85A7mod143=123,甲將c發(fā)送至乙;(二)乙利用私鑰(n,d)=(143,103)對(duì)c進(jìn)行計(jì)算:m=cAdmodn=123A103mod143=85,現(xiàn)乙已經(jīng)得到甲向其要發(fā)送的機(jī)密數(shù)據(jù)信息,而甲向乙發(fā)送信息時(shí),甲所擁有的僅僅是乙的公鑰;由此可知,由(n,e)加密的數(shù)據(jù)只能用(n,d)解密,反之亦然,從而證明RSA加密算法是可逆的,但RSA的可逆是基于特定的數(shù)值對(duì)(即稱為公鑰和私鑰)。另外,RSA算法的安全性依賴于大數(shù)分解,公鑰和私鑰都是兩個(gè)大素?cái)?shù)(大于100個(gè)十進(jìn)制位)的函數(shù)。從理論上講,從一個(gè)密鑰和密文推斷出明文的難度等同于分解兩個(gè)大素?cái)?shù)的積,因此,只要選擇足夠大的素?cái)?shù)、保證公鑰或私鑰的安全,則采用常規(guī)的破解難度是非常大的,基本上可以認(rèn)定為不可能破解,由此可以認(rèn)定RSA是安全的。3采用RSA算法實(shí)現(xiàn)注冊(cè)碼的基本原理本文檔只描述用戶名+序列號(hào)、在線注冊(cè)、激活碼三種方式,其它方式不予考慮。下面分別描述三種方式實(shí)現(xiàn)的基本原理:3.1用戶名+序列號(hào)生成一對(duì)公鑰E和私鑰D(供軟件注冊(cè)模板和注冊(cè)機(jī)使用);軟件供應(yīng)商編寫一個(gè)注冊(cè)機(jī),通過注冊(cè)機(jī)將輸入的用戶名與私鑰D加密碼生成密碼C(即:注冊(cè)碼);軟件供應(yīng)商將用戶名及注冊(cè)碼提供給用戶。用戶安裝軟件后,輸入用戶名和注冊(cè)碼,軟件注冊(cè)模板采用公鑰E對(duì)注冊(cè)碼解碼后生成F(即:用戶名);軟件注冊(cè)模板比較解碼后的用戶名F與輸入的用戶名,如果相等則用戶合法,完成授權(quán),否則授權(quán)失敗。3.2在線注冊(cè)生成一對(duì)公鑰E和私鑰D(供注冊(cè)系統(tǒng)和注冊(cè)模板使用);軟件供應(yīng)商將用戶的憑證信息通過私鑰D加密后生成F,并存儲(chǔ)在特定的地方,比如說:存儲(chǔ)在注冊(cè)數(shù)據(jù)庫中;用戶安裝軟件后,輸入用戶特征信息后,軟件注冊(cè)模板采用公鑰E對(duì)用戶特征信息加密,形式成注冊(cè)憑證C,通過網(wǎng)絡(luò)發(fā)送到供應(yīng)商的注冊(cè)系統(tǒng)中。注冊(cè)系統(tǒng)采用私鑰D加密用戶注冊(cè)憑證C,生成F。通過F判斷用戶身份的有效性;注冊(cè)系統(tǒng)將注冊(cè)驗(yàn)證的結(jié)果通過私鑰D加密后,通過網(wǎng)絡(luò)發(fā)送給軟件系統(tǒng);軟件注冊(cè)模板采用公鑰E對(duì)驗(yàn)證結(jié)果進(jìn)行解密,根據(jù)結(jié)果來決定是否完成授權(quán);3.3激活碼生成一對(duì)公鑰E和私鑰D(供軟件注冊(cè)模板和注冊(cè)機(jī)使用);用戶安裝軟件后,軟件注冊(cè)模板提取用戶機(jī)器的特定信息(如:MAC地址、CPU序列號(hào)、硬盤序列號(hào)等等),并通過其它的編碼算法(如BASE64)生成一個(gè)申請(qǐng)碼C;用戶將申請(qǐng)碼C發(fā)給軟件供應(yīng)商。軟件供應(yīng)商通過注冊(cè)機(jī)采用私鑰D加密申請(qǐng)碼C后生成激活碼F。軟件供應(yīng)商將激活碼F發(fā)給用戶。用戶輸入激活碼F,軟件注冊(cè)模板采用公鑰E對(duì)激活碼F解碼后生成G(即:用戶機(jī)器特征信息),然后軟件注冊(cè)模板提取用戶機(jī)器的特定信息后進(jìn)行編碼。將編碼的結(jié)果與G進(jìn)行比較,如果相等則用戶合法,完成授權(quán),否則授權(quán)失敗。4實(shí)現(xiàn)方案4.1整體設(shè)計(jì)4.1.1概述本文檔實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能,以DLL(動(dòng)態(tài)連接庫)的形式向應(yīng)用程序提供驗(yàn)證服務(wù)。如何處理授權(quán)驗(yàn)證由應(yīng)用程序本身來完成。ADpli^ticn睨畛Ln一一一一一一一一一一―一一愆愆過空藝盤旋或:簇X空藝盤簇或這堂:嚏堂:送塞ADpli^ticn睨畛Ln一一一一一一一一一一―一一愆愆過空藝盤旋或:簇X空藝盤簇或這堂:嚏堂:送塞>?C^C^-C^-C^-C^-C^-C^-C^-C^-C^-C^-C^-C^CXM::■::■=:■::■::■::-::■::-::■::-!:■::-::■::-::■::-::■!:-::■::-::■::-::■::-::■::-:1::■:>:1::■!:■::■::■::■::■::■::itrlrM-hHj-1j42ftjLL-._JMJ辛2^pjsjfr營(yíng).ivi■.'i'Jjvi*J..心,…..- 點(diǎn)日煎」由耳幣可而耳而西」沔函而'犒杰疝上.V訝條Z杰疝R.T“L-.iTKWL-.R.TbrfL-.『花由新昌諭咨;hb'i.-ta由新兌?節(jié)說hd薩福'如■書說hd捋笛&■皆霜露?V咨言'落■皆霜W上下文結(jié)構(gòu)圖說明:>驗(yàn)證動(dòng)態(tài)庫提供密鑰驗(yàn)證,生成、編、解碼功能。>應(yīng)用程序需要開發(fā)一個(gè)驗(yàn)證模塊,通過調(diào)用驗(yàn)證動(dòng)態(tài)庫中的函數(shù)來進(jìn)行驗(yàn)證。>驗(yàn)證動(dòng)態(tài)庫本身不會(huì)提供提示信息展現(xiàn)和相關(guān)界面,因此,應(yīng)用程序的驗(yàn)證模塊需要提供某些操作和提示界面(例如:注冊(cè)碼輸入框、提示信息框等等); 二^;;;;^;;;;;:;:;;;;^;;1;;;;;;;:;;;;;:;^;;;:~;:;;;二;;、.牛Wf R制算法模塊二 MD5算法模臾■= 虹■辦…二,,:::::"、「:::"■iR帖前4算沾摸炭 飛::注冊(cè)表操作櫻嫌 '■: J LJWP j--+了土三文件操作??瞹:;模塊結(jié)構(gòu)圖說明:>驗(yàn)證接口為一組WINAPI形式的API集,提供驗(yàn)證相關(guān)的服務(wù),由應(yīng)用程序的驗(yàn)證模塊調(diào)用。(C、C++、JAVA、DELPHI、VS.NET語言均可調(diào)用);>驗(yàn)證功能模塊實(shí)現(xiàn)了具體的功能,由驗(yàn)證接口API調(diào)用,向外提供服務(wù),其本身不向外暴露;RSA算法模塊提供RSA算法實(shí)現(xiàn),供驗(yàn)證功能模塊調(diào)用;MD5算法模塊提供MD5算法實(shí)現(xiàn),供驗(yàn)證功能模塊調(diào)用;BASE64算法模塊提供BASE64算法實(shí)現(xiàn),供驗(yàn)證功能模塊調(diào)用;>注冊(cè)表操作模塊提供注冊(cè)表相關(guān)操作的實(shí)現(xiàn),供驗(yàn)證功能模塊調(diào)用;>文件操作模塊提供文件相關(guān)操作的實(shí)現(xiàn),供驗(yàn)證功能模塊調(diào)用4.1.4接口定義IsLicensed函數(shù)【功能說明】:判斷指定應(yīng)用程序是否已經(jīng)被授權(quán)【原型定義】:BOOLWINAPIIsLicensed(LPCTSTRlpAppName=NULL);【參數(shù)說明】:IpAppName:應(yīng)用程序名稱,如果為空值NULL),則驗(yàn)證當(dāng)前應(yīng)程序【返回值】:TRUE:已經(jīng)被授權(quán);硝乙5&未被授權(quán)【備注】:無GetActivationCode函數(shù)【功能說明】:根據(jù)特征信息獲取激活碼【原型定義】:BOOLWINAPIGetActivationCode(LPCTSTRlpCharacter,LPCTSTRlpRegisterCodeUINT32cbSize);【參數(shù)說明】:lpCharacter:特征信息lpRegisterCode:加密后的激活碼cbSize:lpRegisterCode區(qū)域長(zhǎng)度【返回值】:TRUE:成功;FALSE:失敗【備注】:該功能供軟件注冊(cè)機(jī)調(diào)用GetComputerCode函數(shù)【功能說明】:獲取安裝計(jì)算的特征碼【原型定義】:BOOLWINAPIGetComputerCode(LPCTSTRIpRegisterCode);【參數(shù)說明】:lpRegisterCode:加密后的機(jī)器特征碼【返回值】:TRUE:成功;FALSE:失敗【備注】:通過機(jī)器特征碼調(diào)用GetActivationCode函數(shù)可取得激活碼GeneratorKeyFile函數(shù)【功能說明】:產(chǎn)生密鑰文件【原型定義】:BOOLWINAPIGeneratorKeyFile(LPCTSTRlpCharacter,LPCTSTRlpKeyFile);【參數(shù)說明】:lpCharacter:特征信息,如果為空NULL),則取計(jì)算的特征信息。lpKeyFile:保存密鑰文件的名稱【返回值】:TRUE:成功;FALSE:成功【備注】:該功能供軟件注冊(cè)機(jī)調(diào)用ActivationByComputer函數(shù)【功能說明】:根據(jù)機(jī)器特征碼激活系統(tǒng)【原型定義】:BOOLWINAPIActivationByComputer(LPCTSTRlpAcitveCode,LPCTSTRlpAppName=NULL);【參數(shù)說明】:lpAcitveCode:激活碼IpAppName:應(yīng)用程序名稱,如果為空值NULL),則激活當(dāng)前應(yīng)程序【返回值】:TRUE:激活成功;FALSE:激活失敗【備注】:因?yàn)闄C(jī)器特征碼可以由驗(yàn)證模塊自動(dòng)取得,因此不需要用戶輸入注冊(cè)碼ActivationByCharacter函數(shù)【功能說明】:根據(jù)輸入的特征激活系統(tǒng)【原型定義】:BOOLWINAPIActivationByCharacter(LPCTSTRIpCharacter,LPCTSTRlpAcitveCode,LPCTSTRlpAppName=NULL);【參數(shù)說明】:lpCharacter:特征信息lpAcitveCode:激活碼IpAppName:應(yīng)用程序名稱,如果為空值NULL),則激活當(dāng)前應(yīng)程序【返回值】:TRUE:激活成功;FALSE:激活成功【備注】:無ActivationByFile函數(shù)【功能說明】:根據(jù)密鑰文件激活系統(tǒng)【原型定義】:BOOLWINAPIActivationByFile(LPCTSTRlpKeyFileLPCTSTRlpAppName=NULL);【參數(shù)說明】:lpKeyFile:密鑰文件名稱IpAppName:應(yīng)用程序名稱,如果為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球技術(shù)服務(wù)合同范例
- 2025年航空、航天設(shè)備相關(guān)專用設(shè)備項(xiàng)目提案報(bào)告模式
- 2025年國(guó)際會(huì)議服務(wù)提供商合同標(biāo)準(zhǔn)
- 2025年度公司股權(quán)策劃內(nèi)部轉(zhuǎn)讓協(xié)議
- 2025年宅基地共建住宅合同樣本
- 2025年人保租賃合同格式
- 2025年不銹鋼管材訂購合同樣本
- 2025年個(gè)人購置家居設(shè)施合同范文
- 2025年化學(xué)品倉庫消防隔離帶鋪設(shè)工程承包協(xié)議
- 2025年圖書策劃保密合同
- 桂花-作文ppt-PPT課件(共14張)
- 高一數(shù)學(xué)概率部分知識(shí)點(diǎn)總結(jié)及典型例題解析 新課標(biāo) 人教版 必修
- 【課件】Unit1ReadingforWriting課件高中英語人教版(2019)必修第二冊(cè)
- 滴灌工程設(shè)計(jì)示例
- 鐵路運(yùn)費(fèi)計(jì)算方法
- 《小腦梗死護(hù)理查房》
- 免疫及炎癥相關(guān)信號(hào)通路
- 醫(yī)院室外管網(wǎng)景觀綠化施工組織設(shè)計(jì)
- 某風(fēng)電場(chǎng)設(shè)備材料設(shè)備清單
- —橋梁專業(yè)施工圖設(shè)計(jì)審查要(終)
- 德龍自卸車合格證掃描件(原圖)
評(píng)論
0/150
提交評(píng)論