董海量 張亮 劉金星
【 摘 要 】 對于收費軟件,用戶經常希望能夠先試用軟件再決定是否購買,軟件銷售商可以給潛在用戶提供一定的試用期或試用次數。注冊碼機制是常用的軟件銷售權益保護方法。論文針對軟件注冊機制的原理,提出了一種可定制試用期限的軟件注冊算法,并給出了一種簡單實用的算法示例,方便軟件銷售商為潛在用戶提供靈活的試用期限。
【 關鍵詞 】 軟件;注冊;定制;試用期限;算法
【 Abstract 】 For billing software, users often want to be able to try the software before deciding whether to buy. Software vendors can provide to potential users of a certain number of probation or trial. License mechanism is a common sales protection method used by software. Based on analyzing the principles of software registration mechanisms,a customizable for trial period software registration algorithm, as well as a simple and practical example was proposed, which can be used by software venders to provide a flexible trial period for the potential users.
【 Keywords 】 software; registration; customizable; trial period; algorithm
1 引言
注冊碼機制是收費軟件常用的權益保護方法。當用戶購買軟件后,即可獲得軟件銷售商提供的注冊碼,從而正當合法使用軟件的全部授權功能。為了有效保護軟件銷售權益,軟件一般采用復雜的加密技術來生成注冊碼,用戶只有輸入正確的注冊碼才能使用軟件的全部功能。但在某些時候,用戶有可能需要先對軟件進行試用,然后再決定是否購買該軟件。針對這種情況,軟件在未注冊前可以給用戶一定的試用期或試用次數。試用結束后,用戶如果沒有輸入正確的注冊碼,將不能繼續使用該軟件。本文給出了一種可根據用戶需求自定義試用期限的軟件注冊算法,軟件銷售商可以根據不同用戶的需要設置試用期限,使得用戶試用軟件在時間上更加靈活。
2 軟件注冊機制的原理
采用注冊碼機制的軟件在初次安裝時處于未注冊狀態。軟件內含注冊碼驗證程序。若用戶輸入正確的注冊碼,則軟件變為注冊狀態,并開啟全部授權功能供用戶使用;否則,軟件保持未注冊狀態。根據軟件是否限制安裝電腦數量,可將注冊碼分為兩種:一種是不限制用戶將軟件安裝于哪一臺電腦,另一種是限制用戶僅能在某一臺電腦上使用該軟件。后一種情形下,用戶需要事先向軟件銷售商提供機器碼(軟件初次安裝時根據用戶電腦配置信息生成的標識符),軟件銷售商使用注冊碼生成器產生與用戶提供的機器碼相對應的注冊碼并分發給用戶。
3 可定制試用期限的軟件注冊算法原理
軟件本身具有三種狀態:注冊狀態、未注冊狀態和試用狀態。可定制試用期限的注冊算法關鍵在于對注冊碼的結構和注冊碼驗證程序進行特殊設計。將注冊碼設計成無限期使用和試用某段時間兩種類型。用戶在軟件注冊窗口輸入注冊碼后,軟件根據注冊碼的類型來做出不同的響應。如果用戶輸入的是正確的無限期使用的注冊碼,則軟件從未注冊狀態變為注冊狀態,并永久開啟全部授權功能;如果用戶輸入的是正確的試用某段時間的注冊碼,則軟件從未注冊狀態變為試用狀態,暫時開啟全部授權功能,到達試用期限后自動恢復成未注冊狀態,并關閉全部授權功能;如果用戶在軟件試用期間內輸入正確的無限期使用的注冊碼,則軟件變成注冊狀態,并永久開啟全部授權功能。
4 算法示例
本文針對用戶購買軟件需要提供機器碼的情形,給出一種較為簡單實用的可定制試用期限的注冊算法示例。將注冊碼設計成兩種類型:一種不限制使用時間,由16位字母或數字組成;另一種包含試用期限,由18位字母或數字組成。機器碼由16位字母或數字組成,計算方法有幾種:
①讀取用戶電腦的當前日期并轉換成“YYYYMMDD”格式,得8位字符串c1;
②讀取用戶電腦主硬盤序列號并截取最后4位字母或數字,得4位字符串c2;
③讀取用戶電腦網卡MAC地址并截取最后4位字母或數字,得4位字符串c3;
④計算機器碼p=P(c1c2c3)。
其中P為字符加密變換算法(對應的逆算法為P'),將字符串c1c2c3通過適當字符加密變換得到最終的機器碼p。
軟件銷售商收到用戶機器碼p后,計算c0=P'(p),從字符串c0可得出用戶安裝軟件的時間等信息。若用戶已購買軟件無限期使用權,則使用注冊碼生成器對p進行加密變換,生成不限制使用時間的注冊碼m=f1(p)發送給用戶;若用戶需試用一段時間t,則使用注冊碼生成器對p進行加密變換,生成包含試用時間期限的注冊碼m=f2(p,t)發送給用戶。
用戶正確注冊后,軟件在電腦指定位置生成一份授權文件Fi(加密文件,包含軟件是否注冊、限期試用時間、以及通過驗證的注冊碼等信息)。軟件啟動時,首先運行注冊狀態檢測程序,其工作流程分為幾步:
①在指定位置查找是否存在合法授權文件Fi,若存在轉②,否則轉⑦;
②從文件Fi中解密出是否有限期試用時間d,若有轉③,否則轉④;
③將d與當前電腦日期d'相比較,若d > d',轉⑤,否則轉⑥;
④正常啟動軟件供用戶使用,軟件保持注冊狀態,注冊狀態檢測程序結束;
⑤正常啟動軟件供用戶使用,軟件保持試用狀態,并提示限期試用時間,注冊狀態檢測程序結束;
⑥提示用戶試用時間已到,將軟件設置成未注冊狀態,關閉全部授權功能,要求用戶重新輸入正確的注冊碼;
⑦提示軟件未注冊,軟件保持未注冊狀態,彈出注冊碼輸入窗口,要求用戶輸入正確的注冊碼才能繼續使用。
當用戶輸入注冊碼m后,注冊碼驗證程序的工作流程是:
①判斷m組成是否符合約定格式,符合轉②,否則轉⑧;
②判斷m是否屬于限制試用日期的注冊碼,是則轉③,否則轉④;
③驗證注冊碼m是否正確,是則轉⑤,否則轉⑧;
④驗證注冊碼m是否正確,是則轉⑥,否則轉⑧;
⑤從注冊碼中解密出限制試用日期d,與當前電腦日期d'相比較,若d > d',轉⑦,否則轉⑨;
⑥提示軟件注冊成功,將軟件設置成注冊狀態,開啟軟件全部授權功能,并在指定位置生成注冊文件Fi(包含通過驗證的注冊碼等信息),提示用戶重啟軟件即可正常使用;
⑦提示軟件注冊成功,將軟件設置成試用狀態,開啟軟件全部試用功能,提示用戶試用日期,并在指定位置生成注冊文件Fi(包含通過驗證的注冊碼等信息),提示用戶重啟軟件即可正常試用;
⑧提示注冊碼不正確,初始化注冊碼輸入窗口,要求用戶繼續輸入正確的注冊碼才能使用軟件;
⑨提示用戶超出試用日期,將軟件設置為未注冊狀態,初始化注冊碼輸入窗口,要求用戶繼續輸入正確的注冊碼才能使用軟件。
上述算法示例中,用戶若故意更改電腦當前日期即可輕易延長軟件試用時間。可對該算法進行改進,比如將限期試用日期設計成定時器,并對某些關鍵環節采取加密技術等,本文此處不贅述。
5 結束語
本文分析了軟件注冊機制的原理,描述了一種可限制試用日期的注冊算法原理,并給出了一種簡單實用的算法示例。采用該注冊算法的軟件能夠根據需要給用戶提供靈活的試用時間。
參考文獻
[1] 賀慧萍.計算機軟件注冊碼的用途及其法律保護[J].產業與科技論壇,2012,11(3):50-51.
[2] 胡沙沙,馬巧梅等. 基于分存策略的軟件注冊碼加密保護[J]. 計算機工程與設計,2015,(3):603-607.
[3] 李林孖.基于知識產權保護的軟件注冊功能設計與實現[J].電腦編程技巧與維護,2012,(2):15-18.
[4] 張暢,胡谷雨等.基于機器碼加密的軟件版權保護方案[J].計算機安全,2013,(3):46-48.
作者簡介:
董海量(1984-),男,漢族,江蘇淮安人,畢業于國防科學技術大學,碩士研究生,工學碩士,中國人民解放軍61716部隊,工程師;主要研究方向和關注領域:計算機應用技術。
張亮(1982-),男,漢族,黑龍江哈爾濱人,畢業于國防科學技術大學,大學本科,工學學士,中國人民解放軍61716部隊,工程師;主要研究方向和關注領域:信息工程。
劉金星(1983-),男,漢族,遼寧錦州人,畢業于國防科學技術大學,碩士研究生,工學碩士,中國人民解放軍61716部隊,工程師;主要研究方向和關注領域:電子技術、軟件工程。