專利名稱:一種能識別計算機的智能加密方法
技術領域:
本發(fā)明主要涉及計算機軟件加密技術,電腦軟件反盜版技術。
背景技術:
現(xiàn)在軟件加密主要有兩大類其一是硬件加密,即所謂的“看門狗”。采用硬件加密費用較高,增加了軟件購買者的經(jīng)濟負擔。所以,現(xiàn)在硬件加密的方法,僅用于企業(yè)使用的軟件的加密,民用軟件很少采用。其二是在程序中預先設置一個固定的序列號或密碼,運行時將用戶輸入的序列號或密碼與軟件內的序列號或密碼進行比較,以達到軟件加密的目的。這種方法由于軟件內的序列號或密碼是固定的,因此只要有了正確的序列號或密碼,則軟件可在任何計算機上使用。這樣盜版者可以購買一款正版軟件,獲得序列號或密碼后,將軟件連同序列號或密碼制成光盤出售。
發(fā)明內容
本發(fā)明是讓加密軟件具有自動識別計算機的功能,加密軟件能夠根據(jù)用戶機的硬件或軟件的配置情況,自動選取計算機的幾種特征參數(shù)生成密碼,因此,一個密碼只能用于特定的一臺計算機,故增加了盜版的難度。
本發(fā)明的思路如圖1、圖2所示。其關鍵步驟是用戶先運行檢測程序,獲得特征參數(shù),并用該特征參數(shù)向軟件發(fā)行商換取密碼。獲取用戶機的特征參數(shù),可以通過WindowsAPI的各種函數(shù)檢測到計算機的硬件特征參數(shù)和軟件特征參數(shù),例如計算機的CPU、主版、內存、網(wǎng)卡、硬盤等的序列號或參數(shù),操作系統(tǒng)的版本號、注冊號、IP地址、計算機名稱等。但由于軟件系統(tǒng)經(jīng)常變化,而且有的參數(shù)可以方便的改變。所以,會增加用戶的注冊次數(shù),加密的可靠性也不高。所以,計算機軟件系統(tǒng)參數(shù)只能與硬件參數(shù)混合使用,最好不要單獨使用軟件系統(tǒng)參數(shù)進行加密??紤]到有的計算機會缺少一些硬件,故本發(fā)明采用智能綜合特征參數(shù)來識別計算機。由于網(wǎng)卡序列號Y(一個48位數(shù)字)是生產(chǎn)商設置的,每個網(wǎng)卡都有一個序列號,其重復的可能性很小,要優(yōu)先采用。但是,若計算機無網(wǎng)卡(或網(wǎng)卡被屏蔽),就要使用別的特征參數(shù),經(jīng)本人測試發(fā)現(xiàn)不同品牌不同標稱容量內存的物理內存總量X(一般為8~9位的數(shù)字)是千差萬別的,另外,有多個內存條的計算機和采用集成顯卡的計算機其物理內存總量X差別更大。為了進一步減小重碼,可再輔以計算機名稱等軟件系統(tǒng)特征參數(shù)Z,這樣就可生成計算機的綜合特征參數(shù)C。得到X、Y、Z后,若Y不等于0,即表示有網(wǎng)卡,這時按C=F1(X,Y)計算綜合特征參數(shù)C;若Y等于0,即表示計算機無網(wǎng)卡(或網(wǎng)卡被屏蔽),這時就按C=F1(X,Z)計算綜合特征參數(shù)C。算出綜合特征參數(shù)C后顯示出來告知用戶。由于X和Y或X和Z均相同的可能性很小,故C幾乎是不可能重復的。用戶將顯示的C告知軟件開發(fā)商進行注冊;開發(fā)商按M=F2(C)加密,并將密碼M反送給用戶,解密程序也按N=F2(C)算出解碼N,并與用戶輸入的密碼M進行比較,相同則進入應用程序,不同則立即退出,從而達到了加密的目的。由于密碼是根據(jù)計算機的特征參數(shù)算出的,故在某臺計算機上能用的密碼在別的計算機上是一定不能用的,因此,本加密方法可以識別計算機,即可以指定某一特定計算機可以使用應用程序。
四
圖1為用戶獲取特征參數(shù)和密碼的流程圖。圖2是解密流程圖。圖中橢圓是人的行為,方框是計算機程序要實現(xiàn)的功能。特征參數(shù)測試程序直接引用免費共享程序,故其程序框圖從略。
五具體實施例方式
實施本發(fā)明需要編寫測試程序和解密程序。編寫程序可以用各種高級語言,如VB、VC等。下面以VB為例,來說明實施本發(fā)明的具體方式。
測試程序的編寫1.新建VB工程,設置一個窗體和一個模塊。2.在窗體中添加一個顯示文本控件、一個輸入文本控件及兩個按鈕控件。顯示文本控件用于顯示注冊方式、注冊條件、聯(lián)系方式等固定內容。輸入文本控件用于顯示測試到的綜合特征參數(shù),兩個按鈕控件一個用于開始測試程序,一個用于結束測試程序。3.在模塊代碼框中聲明API的GlobalMemoryStatus函數(shù),調用該函數(shù)獲取系統(tǒng)物理內存總量X。將《Visual Basic編程實例教程》(袁帥等編寫)一書中的免費共享程序《獲取網(wǎng)卡系列號》及《獲取主機名和IP地址》的源程序復制到模塊代碼框中,去掉《獲取網(wǎng)卡系列號》源代碼中將序列號轉換為16進制數(shù)的語句,添加提取網(wǎng)卡序列號后面一組(第五組)10進制數(shù)Y的語句。若要求重碼少時,可多取幾組。用VB的ASC函數(shù)將《獲取主機名和IP地址》程序獲取的主機名的第一個字符轉換成10進制代碼Z。4.在窗體代碼框中,判別Y是否為0,若Y不為0,則按C=F1(X,Y)計算綜合特征參數(shù)C,若Y為0,則按C=F1(X,Z)計算綜合特征參數(shù)。5.顯示C,告知用戶。單擊退出按鈕關閉窗體退出。
解密程序的編寫1.在應用程序前加入解密程序,即先運行解密程序,解密成功才能進入應用程序。2.設置一個窗體、一個模塊。3.在窗體中添加一個輸入對話框控件,以便用戶輸入密碼。4.將測試程序中測試特征參數(shù)和計算綜合特征參數(shù)C的有關語句復制到解密程序中,以保證兩個程序計算的C相同。5.按N=F2(C)計算解碼N。F2(C)由軟件開發(fā)商自行定義,F(xiàn)2(C)越復雜越不易被破譯。6.用比較語句將用戶輸入的密碼M與計算的解碼N相比較,相同就進入應用程序。不同就關閉窗體,退出。
用戶密碼的獲得用戶得到軟件后,先運行測試程序以獲取綜合特征參數(shù)C,根據(jù)提示向軟件開發(fā)商交款注冊,并將綜合特征參數(shù)C告知軟件開發(fā)商。開發(fā)商確認已經(jīng)注冊后,用F2(C)計算出密碼,并發(fā)送給用戶。用這個密碼就可以使用軟件了。
實施例用VB編寫解密軟件(具體見附件之其它證明文件軟件光盤)。軟件中C=F1(X,Y)=Y*1000+X或C=F1(X,Z)=Z*1000+X,F(xiàn)2(C)=(C*2+123)*3。X,Y,Z取實測參數(shù)的后三位。
將該軟件用于一臺MMX200 CPU、64M內存、有網(wǎng)卡、Windows98操作系統(tǒng)、計算機名為XB的筆記本電腦,測得X=152,Y=134,C=134152,按(C*2+123)*3算出密碼為805281,運行應用軟件,輸入密碼805281,順利進入主程序。若輸入其它代碼,則均不能進入,加密成功。將該軟件用于一臺賽揚500 CPU、128M(64M+64M)內存、無網(wǎng)卡、集成顯卡、WindowsMe操作系統(tǒng)、計算機名為XM的兼容電腦,測得X=704,Y=0,Z=120,C=120704,按(C*2+123)*3算出密碼為724593,運行應用軟件,輸入密碼724593,順利進入主程序。若輸入其它代碼,則均不能進入,加密成功。另外通過多臺電腦試用均效果很好。
權利要求
1.要求保護“自動檢測用戶計算機的特征參數(shù),自動選取最佳幾條特征參數(shù)生成綜合特征參數(shù),并最終生成密碼”的工作機制。
2.若權利要求1與其它專利技術有沖突,要求保護“根據(jù)有無網(wǎng)卡自動確定由物理內存總量輔以網(wǎng)卡序列號生成綜合特征參數(shù),還是由物理內存總量輔以計算機名稱生成綜合特征參數(shù),并最終生成密碼”的智能加密方法。
3.若權利要求1、2與其它專利技術有沖突,要求保護“由物理內存總量輔以網(wǎng)卡序列號生成綜合特征參數(shù),并最終生成密碼“的方法。
4.若權利要求1、2、3與其它專利技術有沖突,要求保護“由物理內存總量輔以計算機名稱生成綜合特征參數(shù),并最終生成密碼”的方法。
5.若權利要求1、2、3、4與其它專利技術有沖突,要求保護“由物理內存總量生成密碼”的方法。
6.要求保護“用戶先運行一次測試程序,獲得特征參數(shù)后用該特征參數(shù)向軟件開發(fā)商換取密碼”這一加密步驟。
7.要求保護“軟件開發(fā)商和解密程序用同一函數(shù)(由軟件開發(fā)商自行定義),在不同地方分別根據(jù)計算機特征參數(shù)計算密碼和解碼”的方法。
全文摘要
“一種能識別計算機的智能加密方法”用于對計算機的應用軟件進行加密。主要涉及計算機軟件加密技術。本發(fā)明可以識別計算機,一個密碼只能適用于特定的一臺計算機,故軟件不易被盜用。本發(fā)明通過Windows的API函數(shù)檢測計算機的特征參數(shù),并自動選擇最佳的幾種特征參數(shù)生成綜合特征參數(shù),用戶將測出的綜合特征參數(shù)告知軟件開發(fā)商,開發(fā)商用該參數(shù)算出密碼,并告知用戶。解密程序也按同一函數(shù)算出解碼,并與用戶輸入的密碼比較,相同則進入主程序,不同則退出。
文檔編號G06F11/00GK1591333SQ0315289
公開日2005年3月9日 申請日期2003年9月1日 優(yōu)先權日2003年9月1日
發(fā)明者許必熙 申請人:許必熙