章 濤 白 樺 龐 帥 王 巍
(1 1..中國石油大學(xué),北京 10224902249;2 2..浙江正泰中自控制工程有限公司,浙江 杭州 31001810018)
由于石油領(lǐng)域自身背景所限,大學(xué)生的編程水平主要集中在計(jì)算上,而對(duì)軟件架構(gòu)、界面設(shè)計(jì)等只停留在初步水準(zhǔn)。除此以外,考慮到石油行業(yè)現(xiàn)場條件復(fù)雜,一線技術(shù)人員需要快捷簡潔的操作方式。基于占用最少資源和操作時(shí)間的原則,軟件的計(jì)算主體以外部分(即登錄、幫助、保存和打印等功能)要相對(duì)的簡化。鑒于此,我們需要對(duì)軟件盈利方式中關(guān)鍵的密碼服務(wù)系統(tǒng)進(jìn)行全面的設(shè)計(jì)。
我們結(jié)合自身特點(diǎn),設(shè)計(jì)了簡單用戶名-密碼控制和在此基礎(chǔ)上的使用次數(shù)控制、使用時(shí)間控制以及機(jī)器碼-密碼控制四套簡便的密碼服務(wù)系統(tǒng)。我們采用石油行業(yè)商業(yè)軟件常用外包裝界面語言——VB6.0編寫了示范代碼。VB優(yōu)秀的可視化編程語言,在用戶界面設(shè)計(jì)和快速開發(fā)等方面具有獨(dú)特的優(yōu)勢[1]。從5.0版本開始,可以編譯鏈接生成本機(jī)代碼的可執(zhí)行文件,能夠脫離 VB的集成開發(fā)環(huán)境進(jìn)行發(fā)布,較好地封裝了用戶的算法,有效地保護(hù)用戶的源代碼[2]。
基本的密碼服務(wù)系統(tǒng)就是依靠用戶名和密碼的匹配來進(jìn)行身份驗(yàn)證。即用戶輸入從軟件開發(fā)者處購買的用戶名和密碼,軟件內(nèi)部程序會(huì)檢測是否匹配來驗(yàn)證使用者的權(quán)限。下面是一段實(shí)例代碼:
上述基本的用戶名-密碼驗(yàn)證系統(tǒng)的缺陷在于獲得了身份信息的用戶可以無限制使用程序,甚至可以把得到驗(yàn)證的用戶名和密碼流傳出去,影響軟件的后續(xù)銷售。
在2.1節(jié)介紹的用戶名-密碼系統(tǒng)基礎(chǔ)上,我們可以加入使用次數(shù)的控制方法。即用戶以一定金額購買軟件的使用次數(shù),每一次輸入用戶名和密碼運(yùn)行程序就會(huì)進(jìn)行計(jì)數(shù),達(dá)到使用次數(shù)上限的用戶將無法通過驗(yàn)證。這個(gè)方法有一個(gè)缺陷在于,用戶在達(dá)到一定使用次數(shù)后可以重新安裝軟件,清零使用計(jì)數(shù)從而獲得超出其購買次數(shù)的使用量。為了解決這個(gè)問題,我們的處理方法是用戶安裝軟件時(shí)程序默認(rèn)在指定的一個(gè)盤符里建一個(gè)新的dat文件,存儲(chǔ)使用次數(shù)。每次安裝時(shí)會(huì)檢測這個(gè)文件是否存在,如果已存在則不會(huì)重新建文件(即把次數(shù)歸零)。VB語言中檢測文件是否存在的語句如下:
其中,app.path指存儲(chǔ)文件的路徑,abc.dat指存儲(chǔ)次數(shù)的數(shù)據(jù)文件名。其余部分與2.1節(jié)類似,只需要加入統(tǒng)計(jì)使用次數(shù)的變量即可,這里不多做贅述。但是,本方法雖然能控制一臺(tái)計(jì)算機(jī)上使用軟件的次數(shù),但是用戶也可以通過在新機(jī)器上安裝軟件(相當(dāng)于使用次數(shù)清零了)的方法獲得新的使用次數(shù),這也會(huì)影響到軟件著作者的權(quán)益。
還有一種商業(yè)軟件的銷售模式是控制用戶使用軟件的時(shí)間段,這分為使用軟件的總時(shí)長控制和軟件使用期限控制兩種方法。前者需要記錄用戶每次打開和關(guān)閉軟件的時(shí)間來獲得使用時(shí)長并疊加,超過用戶購買的時(shí)長以后則軟件失效。后者則在每次用戶登錄系統(tǒng)后驗(yàn)證此時(shí)的系統(tǒng)時(shí)間是否超出了購買時(shí)限定的使用期限。為了防止用戶采取修改系統(tǒng)時(shí)間來無限使用軟件的方法,我們可以在用戶輸入用戶名及密碼后讀取網(wǎng)絡(luò)時(shí)間來進(jìn)行判斷。VB語言里讀取網(wǎng)絡(luò)時(shí)間的語句為;
這種語言的缺陷還是在于無法控制軟件在不同機(jī)器間的流傳。
為了克服上述三種方法在機(jī)器間流傳上的無力局面,我們設(shè)計(jì)了一套機(jī)器碼-密碼驗(yàn)證系統(tǒng)。這套系統(tǒng)的邏輯為:用戶先在作者提供的機(jī)器碼生成器上得到本機(jī)對(duì)應(yīng)的機(jī)器碼并反饋給軟件著作者,編寫者用密碼生成器根據(jù)機(jī)器碼生成密碼發(fā)給用戶。用戶界面也會(huì)隱式地生成密碼和用戶得到的密碼相檢驗(yàn)以實(shí)現(xiàn)密碼認(rèn)證的過程。機(jī)器碼的生成是與用戶計(jì)算機(jī)的物理地址對(duì)應(yīng),這就避免了多臺(tái)計(jì)算機(jī)可以采用同一套用戶名登錄的問題。VB語言讀取計(jì)算機(jī)物理地址的示例代碼如下:
機(jī)器碼與密碼之間的轉(zhuǎn)換我們采用的進(jìn)制轉(zhuǎn)換法,即在十進(jìn)制下進(jìn)行密碼算法計(jì)算,再轉(zhuǎn)換為十六進(jìn)制形式設(shè)置為密碼。十六進(jìn)制數(shù)字往往很難辨認(rèn)出規(guī)律和關(guān)系,有利于密碼算法的保密性。
本文針對(duì)商業(yè)軟件盈利模式中非常重要的身份驗(yàn)證,分析了簡單用戶名-密碼控制和在此基礎(chǔ)上的使用次數(shù)控制、使用時(shí)間控制以及機(jī)器碼-密碼控制這四套簡便的密碼服務(wù)系統(tǒng)的優(yōu)劣之處,考慮到程序的簡潔和便捷以及盈利模式的可持續(xù)性,我們推薦采用機(jī)器碼-控制系統(tǒng)。當(dāng)然,用戶也可以根據(jù)自身實(shí)際情況選擇合適的控制方法或者控制方法組合。
[1]趙立偉,張春,施寅.面向過程的編譯和解釋環(huán)境在工控組態(tài)軟件系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005,4:20-21.
[2]朱從旭,鄧宏貴.用VB和Fortran混合編程開發(fā)科學(xué)計(jì)算與作圖軟件[J].計(jì)算機(jī)應(yīng)用,2000(20):65-67.