董海量 張亮 劉金星
【 摘 要 】 對(duì)于收費(fèi)軟件,用戶經(jīng)常希望能夠先試用軟件再?zèng)Q定是否購(gòu)買,軟件銷售商可以給潛在用戶提供一定的試用期或試用次數(shù)。注冊(cè)碼機(jī)制是常用的軟件銷售權(quán)益保護(hù)方法。論文針對(duì)軟件注冊(cè)機(jī)制的原理,提出了一種可定制試用期限的軟件注冊(cè)算法,并給出了一種簡(jiǎn)單實(shí)用的算法示例,方便軟件銷售商為潛在用戶提供靈活的試用期限。
【 關(guān)鍵詞 】 軟件;注冊(cè);定制;試用期限;算法
【 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 引言
注冊(cè)碼機(jī)制是收費(fèi)軟件常用的權(quán)益保護(hù)方法。當(dāng)用戶購(gòu)買軟件后,即可獲得軟件銷售商提供的注冊(cè)碼,從而正當(dāng)合法使用軟件的全部授權(quán)功能。為了有效保護(hù)軟件銷售權(quán)益,軟件一般采用復(fù)雜的加密技術(shù)來(lái)生成注冊(cè)碼,用戶只有輸入正確的注冊(cè)碼才能使用軟件的全部功能。但在某些時(shí)候,用戶有可能需要先對(duì)軟件進(jìn)行試用,然后再?zèng)Q定是否購(gòu)買該軟件。針對(duì)這種情況,軟件在未注冊(cè)前可以給用戶一定的試用期或試用次數(shù)。試用結(jié)束后,用戶如果沒(méi)有輸入正確的注冊(cè)碼,將不能繼續(xù)使用該軟件。本文給出了一種可根據(jù)用戶需求自定義試用期限的軟件注冊(cè)算法,軟件銷售商可以根據(jù)不同用戶的需要設(shè)置試用期限,使得用戶試用軟件在時(shí)間上更加靈活。
2 軟件注冊(cè)機(jī)制的原理
采用注冊(cè)碼機(jī)制的軟件在初次安裝時(shí)處于未注冊(cè)狀態(tài)。軟件內(nèi)含注冊(cè)碼驗(yàn)證程序。若用戶輸入正確的注冊(cè)碼,則軟件變?yōu)樽?cè)狀態(tài),并開(kāi)啟全部授權(quán)功能供用戶使用;否則,軟件保持未注冊(cè)狀態(tài)。根據(jù)軟件是否限制安裝電腦數(shù)量,可將注冊(cè)碼分為兩種:一種是不限制用戶將軟件安裝于哪一臺(tái)電腦,另一種是限制用戶僅能在某一臺(tái)電腦上使用該軟件。后一種情形下,用戶需要事先向軟件銷售商提供機(jī)器碼(軟件初次安裝時(shí)根據(jù)用戶電腦配置信息生成的標(biāo)識(shí)符),軟件銷售商使用注冊(cè)碼生成器產(chǎn)生與用戶提供的機(jī)器碼相對(duì)應(yīng)的注冊(cè)碼并分發(fā)給用戶。
3 可定制試用期限的軟件注冊(cè)算法原理
軟件本身具有三種狀態(tài):注冊(cè)狀態(tài)、未注冊(cè)狀態(tài)和試用狀態(tài)??啥ㄖ圃囉闷谙薜淖?cè)算法關(guān)鍵在于對(duì)注冊(cè)碼的結(jié)構(gòu)和注冊(cè)碼驗(yàn)證程序進(jìn)行特殊設(shè)計(jì)。將注冊(cè)碼設(shè)計(jì)成無(wú)限期使用和試用某段時(shí)間兩種類型。用戶在軟件注冊(cè)窗口輸入注冊(cè)碼后,軟件根據(jù)注冊(cè)碼的類型來(lái)做出不同的響應(yīng)。如果用戶輸入的是正確的無(wú)限期使用的注冊(cè)碼,則軟件從未注冊(cè)狀態(tài)變?yōu)樽?cè)狀態(tài),并永久開(kāi)啟全部授權(quán)功能;如果用戶輸入的是正確的試用某段時(shí)間的注冊(cè)碼,則軟件從未注冊(cè)狀態(tài)變?yōu)樵囉脿顟B(tài),暫時(shí)開(kāi)啟全部授權(quán)功能,到達(dá)試用期限后自動(dòng)恢復(fù)成未注冊(cè)狀態(tài),并關(guān)閉全部授權(quán)功能;如果用戶在軟件試用期間內(nèi)輸入正確的無(wú)限期使用的注冊(cè)碼,則軟件變成注冊(cè)狀態(tài),并永久開(kāi)啟全部授權(quán)功能。
4 算法示例
本文針對(duì)用戶購(gòu)買軟件需要提供機(jī)器碼的情形,給出一種較為簡(jiǎn)單實(shí)用的可定制試用期限的注冊(cè)算法示例。將注冊(cè)碼設(shè)計(jì)成兩種類型:一種不限制使用時(shí)間,由16位字母或數(shù)字組成;另一種包含試用期限,由18位字母或數(shù)字組成。機(jī)器碼由16位字母或數(shù)字組成,計(jì)算方法有幾種:
①讀取用戶電腦的當(dāng)前日期并轉(zhuǎn)換成“YYYYMMDD”格式,得8位字符串c1;
②讀取用戶電腦主硬盤序列號(hào)并截取最后4位字母或數(shù)字,得4位字符串c2;
③讀取用戶電腦網(wǎng)卡MAC地址并截取最后4位字母或數(shù)字,得4位字符串c3;
④計(jì)算機(jī)器碼p=P(c1c2c3)。
其中P為字符加密變換算法(對(duì)應(yīng)的逆算法為P'),將字符串c1c2c3通過(guò)適當(dāng)字符加密變換得到最終的機(jī)器碼p。
軟件銷售商收到用戶機(jī)器碼p后,計(jì)算c0=P'(p),從字符串c0可得出用戶安裝軟件的時(shí)間等信息。若用戶已購(gòu)買軟件無(wú)限期使用權(quán),則使用注冊(cè)碼生成器對(duì)p進(jìn)行加密變換,生成不限制使用時(shí)間的注冊(cè)碼m=f1(p)發(fā)送給用戶;若用戶需試用一段時(shí)間t,則使用注冊(cè)碼生成器對(duì)p進(jìn)行加密變換,生成包含試用時(shí)間期限的注冊(cè)碼m=f2(p,t)發(fā)送給用戶。
用戶正確注冊(cè)后,軟件在電腦指定位置生成一份授權(quán)文件Fi(加密文件,包含軟件是否注冊(cè)、限期試用時(shí)間、以及通過(guò)驗(yàn)證的注冊(cè)碼等信息)。軟件啟動(dòng)時(shí),首先運(yùn)行注冊(cè)狀態(tài)檢測(cè)程序,其工作流程分為幾步:
①在指定位置查找是否存在合法授權(quán)文件Fi,若存在轉(zhuǎn)②,否則轉(zhuǎn)⑦;
②從文件Fi中解密出是否有限期試用時(shí)間d,若有轉(zhuǎn)③,否則轉(zhuǎn)④;
③將d與當(dāng)前電腦日期d'相比較,若d > d',轉(zhuǎn)⑤,否則轉(zhuǎn)⑥;
④正常啟動(dòng)軟件供用戶使用,軟件保持注冊(cè)狀態(tài),注冊(cè)狀態(tài)檢測(cè)程序結(jié)束;
⑤正常啟動(dòng)軟件供用戶使用,軟件保持試用狀態(tài),并提示限期試用時(shí)間,注冊(cè)狀態(tài)檢測(cè)程序結(jié)束;
⑥提示用戶試用時(shí)間已到,將軟件設(shè)置成未注冊(cè)狀態(tài),關(guān)閉全部授權(quán)功能,要求用戶重新輸入正確的注冊(cè)碼;
⑦提示軟件未注冊(cè),軟件保持未注冊(cè)狀態(tài),彈出注冊(cè)碼輸入窗口,要求用戶輸入正確的注冊(cè)碼才能繼續(xù)使用。
當(dāng)用戶輸入注冊(cè)碼m后,注冊(cè)碼驗(yàn)證程序的工作流程是:
①判斷m組成是否符合約定格式,符合轉(zhuǎn)②,否則轉(zhuǎn)⑧;
②判斷m是否屬于限制試用日期的注冊(cè)碼,是則轉(zhuǎn)③,否則轉(zhuǎn)④;
③驗(yàn)證注冊(cè)碼m是否正確,是則轉(zhuǎn)⑤,否則轉(zhuǎn)⑧;
④驗(yàn)證注冊(cè)碼m是否正確,是則轉(zhuǎn)⑥,否則轉(zhuǎn)⑧;
⑤從注冊(cè)碼中解密出限制試用日期d,與當(dāng)前電腦日期d'相比較,若d > d',轉(zhuǎn)⑦,否則轉(zhuǎn)⑨;
⑥提示軟件注冊(cè)成功,將軟件設(shè)置成注冊(cè)狀態(tài),開(kāi)啟軟件全部授權(quán)功能,并在指定位置生成注冊(cè)文件Fi(包含通過(guò)驗(yàn)證的注冊(cè)碼等信息),提示用戶重啟軟件即可正常使用;
⑦提示軟件注冊(cè)成功,將軟件設(shè)置成試用狀態(tài),開(kāi)啟軟件全部試用功能,提示用戶試用日期,并在指定位置生成注冊(cè)文件Fi(包含通過(guò)驗(yàn)證的注冊(cè)碼等信息),提示用戶重啟軟件即可正常試用;
⑧提示注冊(cè)碼不正確,初始化注冊(cè)碼輸入窗口,要求用戶繼續(xù)輸入正確的注冊(cè)碼才能使用軟件;
⑨提示用戶超出試用日期,將軟件設(shè)置為未注冊(cè)狀態(tài),初始化注冊(cè)碼輸入窗口,要求用戶繼續(xù)輸入正確的注冊(cè)碼才能使用軟件。
上述算法示例中,用戶若故意更改電腦當(dāng)前日期即可輕易延長(zhǎng)軟件試用時(shí)間??蓪?duì)該算法進(jìn)行改進(jìn),比如將限期試用日期設(shè)計(jì)成定時(shí)器,并對(duì)某些關(guān)鍵環(huán)節(jié)采取加密技術(shù)等,本文此處不贅述。
5 結(jié)束語(yǔ)
本文分析了軟件注冊(cè)機(jī)制的原理,描述了一種可限制試用日期的注冊(cè)算法原理,并給出了一種簡(jiǎn)單實(shí)用的算法示例。采用該注冊(cè)算法的軟件能夠根據(jù)需要給用戶提供靈活的試用時(shí)間。
參考文獻(xiàn)
[1] 賀慧萍.計(jì)算機(jī)軟件注冊(cè)碼的用途及其法律保護(hù)[J].產(chǎn)業(yè)與科技論壇,2012,11(3):50-51.
[2] 胡沙沙,馬巧梅等. 基于分存策略的軟件注冊(cè)碼加密保護(hù)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2015,(3):603-607.
[3] 李林孖.基于知識(shí)產(chǎn)權(quán)保護(hù)的軟件注冊(cè)功能設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2012,(2):15-18.
[4] 張暢,胡谷雨等.基于機(jī)器碼加密的軟件版權(quán)保護(hù)方案[J].計(jì)算機(jī)安全,2013,(3):46-48.
作者簡(jiǎn)介:
董海量(1984-),男,漢族,江蘇淮安人,畢業(yè)于國(guó)防科學(xué)技術(shù)大學(xué),碩士研究生,工學(xué)碩士,中國(guó)人民解放軍61716部隊(duì),工程師;主要研究方向和關(guān)注領(lǐng)域:計(jì)算機(jī)應(yīng)用技術(shù)。
張亮(1982-),男,漢族,黑龍江哈爾濱人,畢業(yè)于國(guó)防科學(xué)技術(shù)大學(xué),大學(xué)本科,工學(xué)學(xué)士,中國(guó)人民解放軍61716部隊(duì),工程師;主要研究方向和關(guān)注領(lǐng)域:信息工程。
劉金星(1983-),男,漢族,遼寧錦州人,畢業(yè)于國(guó)防科學(xué)技術(shù)大學(xué),碩士研究生,工學(xué)碩士,中國(guó)人民解放軍61716部隊(duì),工程師;主要研究方向和關(guān)注領(lǐng)域:電子技術(shù)、軟件工程。