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