畢業(yè)論文——基于USBKEY的文件加密工具--USBkey管理系統(tǒng)_第1頁
畢業(yè)論文——基于USBKEY的文件加密工具--USBkey管理系統(tǒng)_第2頁
畢業(yè)論文——基于USBKEY的文件加密工具--USBkey管理系統(tǒng)_第3頁
畢業(yè)論文——基于USBKEY的文件加密工具--USBkey管理系統(tǒng)_第4頁
畢業(yè)論文——基于USBKEY的文件加密工具--USBkey管理系統(tǒng)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于usb key的文件加密工具usb key管理系統(tǒng)摘要隨著信息技術(shù)的飛速發(fā)展,文件的安全性越來越被重視。為了實現(xiàn)對 個人重要信息的加密,防止別人竊取個人的文件信息,提高文件的安全性, 文件加密成為了一個重要的課題。本設(shè)計為了解決用戶記憶煩瑣的密碼問題,以軟、硬件相結(jié)合的方式, 實現(xiàn)了文件加密和解密的功能。具有操作簡單、穩(wěn)定性高、兼容性好、速度 快等特點。該系統(tǒng)使用rockey2加密鎖,用delphi進(jìn)行開發(fā)。本系統(tǒng)分為 兩部分,一部分是文件的加密解密;另一部分是加密鎖的管理工具。后一部 分由本人完成。本文主要介紹了 usb key文件加密工具的總體設(shè)計和詳細(xì)設(shè)計思路以及 應(yīng)用和編碼。在總體

2、設(shè)計中主要介紹了設(shè)計該工具的需求分析、系統(tǒng)的選型、 以及rockey2加密鎖的介紹。在詳細(xì)設(shè)計中主要介紹了系統(tǒng)功能的分析、 rockey2加密鎖的內(nèi)存分配、以及數(shù)據(jù)庫的相關(guān)設(shè)計。在應(yīng)用和編碼部分主 要介紹了破件的安裝,初始化、寫用戶名和密碼的應(yīng)用和編碼,管理界面的 設(shè)計以及數(shù)據(jù)庫的相關(guān)操作。最后介紹了系統(tǒng)的不足以及改進(jìn)方案。關(guān)鍵字: usb;加密;delphi;管理the files encryption tool based on usb-keyusb -key management systemabstractwith the rapid development of it, the se

3、curity of the files has been increasingly attention. to implement encryption for important personal information, preventing others that steal personal information, improving the security of the document, encryption has been a very important topic.this design aims to solve the problem that users pass

4、words are remembered difficulty, implement the functions of encryption and decryption for documents by the combination of software and hardware. it has many characteristics, such as simple, stable, good compatibility, speed and so on. the system uses rockey2 usb key, developed with delphi. this syst

5、em has two parts, one part mark is the document encryption deciphering; another part of the administration implement being to encrypt a lock. the queen part is completed by me.this paper introduces the brief design, detailed design, the application and coding of usb key file encryption tool. it intr

6、oduces the requirements analysis, the system selection for the design, and rockey2 encryption in the brief design. and it introduces the main functions of the system analysis, the memory allocation of encryption rockey2, and the related database design in the detailed design. besides, in the aspect

7、of application and coding, it main introduces the hardware installation, initialization, writing usersname, passwords for application and coding, and design of management interface, operation of the database. finally, it introduces the shortcomings of the system and how to improve it.key word: usb;

8、encryption; delphi; management.1引言1.1選題背景隨著社會高科技,商品經(jīng)濟(jì)化突飛猛進(jìn)的發(fā)展,計算機(jī)的應(yīng)用已經(jīng)普及到 經(jīng)濟(jì)和社會生活的各個領(lǐng)域。長期以來人們使用各種加密技術(shù)以保證計算機(jī)中信 息的安全,防止被一些有不良用心的人看到或則破壞。在信息時代,信息可以幫 助團(tuán)體和個人,使他們受益,同時,信息也可以對他們構(gòu)成威脅,造成破壞。在 激烈競爭的社會中,大家都會想盡辦法獲取對方的資料。因此客觀上就需要有一種強(qiáng)有力的安全措施來保護(hù)我們的機(jī)密數(shù)據(jù)不被竊取和破壞。1.2內(nèi)外研究現(xiàn)狀在日常的應(yīng)用中,面對很多熟知的壓縮軟件和加密軟件,例如winrar.winzip 等,這些軟件

9、也逐漸成為了當(dāng)前大家默認(rèn)的業(yè)界應(yīng)用標(biāo)準(zhǔn)。然而,也正是它們的 通用性和普遍性使它們?nèi)狈€性化的應(yīng)用特色,采用口令保護(hù)的方式對壓縮文件 進(jìn)行加密也是形同虛設(shè),有許多破解軟件都能夠輕而易舉地獲取口令。面對winrar和winzip自身的不足。比如密碼太長用戶就不方便記憶,有可能會忘記, 密碼太短又會不安全。如果利用擴(kuò)展硬件(usb key)來進(jìn)行文件的加密和解密, 那么就可以有效避免上面的問題。因此這樣就不需要手工來進(jìn)行密碼的輸入,而 將加密和解密的密碼是保存在擴(kuò)展硬件當(dāng)中的。1. 3本設(shè)計研究的意義如果使用硬件來進(jìn)行文件的加密具有訪問速度快、可靠性高、保密性好、壽 命長等優(yōu)點。但是以前加密硬件成本

10、較高,往往用在對安全要求相對較高的場合。隨著硬件成木的降低,這種設(shè)備己經(jīng)可以被個人所接受。因此木文描述了一種使 用低成本usb key來輔助進(jìn)行加密的文件加密系統(tǒng),可以廣泛的應(yīng)用在個人信息 的保護(hù)和企業(yè)重要文件保護(hù)當(dāng)中。14本設(shè)計研究的方法本設(shè)計分為兩個部分,由兩個人共同完成。一部分是利用低成本的usb key 來做一個對文件的加密工具;一部分是利用delphi編寫的一個相對簡單的管理 軟件來實現(xiàn)對usb key的管理。加密工具符合大多用戶操作winrar的習(xí)慣,可 以方便的對文件進(jìn)行加密和解密的操作,同吋具有方便、易用、安全的特點。管 理軟件能對用戶以及usb key進(jìn)行簡單的管理,當(dāng)用戶擁

11、有的usb key遺失時可以有效的復(fù)制一把usb key,同時管理界面簡單、易用的特點。2 usb key文件加密工具總體設(shè)計2. 1usb key文件加密工具需求分析當(dāng)前軟件加密方法多種多樣,基本上來說可以分為依賴特定硬件的加密方案 和不依賴硬件的加密方案。依賴特定硬件的加密方案:軟盤加密、卡加密、光盤加密。軟盤加密和卡加 密曾經(jīng)作為一種很好的加密工具,現(xiàn)在已經(jīng)很少使用了,這是因為用戶很少使用 軟驅(qū),那么軟盤加密技術(shù)也就沒怎么使用。90年代初,各種各樣的漢卡涌現(xiàn)出 來,并轟動一時,而現(xiàn)在也很少再使用。光盤加密是一種新的加密方式。既然有 軟盤加密成功在先,為什么不能有光盤加密呢?但實際操作上確

12、實是有一些問題 的,因為光盤有is09660標(biāo)準(zhǔn)協(xié)議規(guī)定,其可控制性比軟盤還要嚴(yán)格,想找出一 種只能運行而不能復(fù)制的方式確實很困難。不依賴硬件的加密方案:利用winrar. winzip等壓縮軟件來進(jìn)行文件的加 密。利用壓縮軟件來實現(xiàn)對文件的加密是現(xiàn)在比較流行的一種方式,但是其有很 多的不足,例如向密碼太長用戶就不方便記憶,有可能會忘記,密碼太短乂會不 安全。并且現(xiàn)在網(wǎng)上有很多的針對winrar. winzip的破解工具,利用破解工具 很容易就把用戶的密碼給破解了,這樣用戶對文件的加密就如同虛設(shè)。本設(shè)計就是利用軟件和硬件相結(jié)合的方式來實現(xiàn)對文件進(jìn)行加密。這種方式 就是使用軟件加密鎖(usb k

13、ey)來實現(xiàn)。也就是一個插在計算機(jī)usb接口上火 柴盒大小的設(shè)備,國內(nèi)俗稱“加密狗”。在加密鎖內(nèi)部存有一定的數(shù)據(jù)和算法, 計算機(jī)可以與之通訊來獲得其中的數(shù)據(jù),或通過加密鎖進(jìn)行某種計算。軟件無法 離開加密鎖而運行。由于它不像卡加密那樣需要打開計算機(jī)的機(jī)箱來安裝,但乂 像加密卡那樣可以隨時訪問,而且訪問速度很快,所以一推出就受到軟件開發(fā)者 們的青睞。目前,所有的加密鎖都提供了可編程的接口。用戶可以控制加密鎖中 的內(nèi)容,在程序中通過加密鎖的接口任意訪問加密鎖。利用usb key對文件加密應(yīng)盡量滿足用戶的需求,使用戶對文件加密和解密 的過程操作簡單,使用方便。并且對密碼也要有完善的管理。使用usb k

14、ey可以 在usb key中保存密碼,不在需要用戶去手動輸入密碼,解決了用戶去記憶復(fù)雜 密碼的過程。鑒于越來越多的人使用usb key來保護(hù)自己的個人文件。但是許多 的意外事件可能會降臨,一旦usb key被遺失,那么后果將是巨大的。所以開發(fā) 一個管理性的軟件記錄擁有usb key的用戶相關(guān)信息、usb key的硬件id、以及 對文件加密的密碼是十分必要且有效的方法。利用usb key文件加密需要從兩個方面去實現(xiàn)用戶的需求,第一:usb key 的管理。第二:客戶端應(yīng)用。在usb key的管理方面:主要包括分類管理、客戶添加、查看、編輯,初始 化rockcy2這幾個方面的功能。分類管理是對用戶

15、按什么方式進(jìn)行分類管理(比 如按時間,地區(qū)等),由管理員自己設(shè)定分類方式,這樣便于方便管理用戶;管 理員實現(xiàn)對用戶的添加,查看,編輯;管理員對usb key進(jìn)行初始化,一把新的 usb key第一次使用,必須進(jìn)行初始化,初始化也就是根據(jù)種子生成對文件加密 的密鑰,以及uid,并且還要記錄usb key的信息(包括對文件加密的密鑰,硬 件id等)到管理軟件中,以便以后對usb key進(jìn)行復(fù)制。在客戶端方面,應(yīng)該盡量使操作簡單,不麻煩,就類似winrar對文件加密 的操作一樣。這樣才能被用戶接受。這一方面主要完成文件的加密和解密操作。其系統(tǒng)結(jié)構(gòu)圖如下:圖1系統(tǒng)整體結(jié)構(gòu)圖usb key文件加密系統(tǒng)的

16、客戶端主要實現(xiàn)對文件的加密和解密;其管理系統(tǒng) 主要實現(xiàn)對對用戶以及擁有的usb key信息進(jìn)行操作管理。2. 2系統(tǒng)選型2. 2. 1設(shè)計語言:delphidelphi是borland公司研制的新一代可視化開發(fā)工具,可在windows3. x、 windows95、windows nt等環(huán)境下使用。它擁有一個可視化的集成開發(fā)環(huán)境(ide), 采用面向?qū)ο蟮木幊陶Z言0bject pascal和基于部件的開發(fā)結(jié)構(gòu)框架。delphi 它提供了 100多個可供使用的構(gòu)件,利用這些部件,開發(fā)人員可以快速地構(gòu)造出 應(yīng)用系統(tǒng)。開發(fā)人員也可以根據(jù)自己的需要修改部件或用delphi本身編寫自己 的部件。主要特點

17、如下:(1)直接編譯生成可執(zhí)行代碼,編譯速度快。(2)支持 將存取規(guī)則分別交給客戶機(jī)或服務(wù)器處理的兩種方案,而且允許開發(fā)人員建立一 個簡單的部件或部件集合,封裝起所有的規(guī)則,并獨立于服務(wù)器和客戶機(jī),所有 的數(shù)據(jù)轉(zhuǎn)移通過這些部件來完成。(3)提供了許多快速方便的開發(fā)方法,使開發(fā) 人員能用盡可能少的重復(fù)性工作完成各種不同的應(yīng)用。利用項目模板和專家生成 器可以很快建立項目的構(gòu)架,然后根據(jù)用戶的實際需要逐步完善。(4)具有可重 用性和可擴(kuò)展性。(5)具有強(qiáng)大的數(shù)據(jù)存取功能。它的數(shù)據(jù)處理工具bde(borland database engine)是一個標(biāo)準(zhǔn)的中介軟件層,可以用來處理當(dāng)前流行的數(shù)據(jù)格 式,

18、如 x baseparadox等,也可以通過bde 的 sql link直接與 sybascsql server、 informix. oracle等大型數(shù)據(jù)庫連接。delphi既可用于開發(fā)系統(tǒng)軟件,也適合 于應(yīng)用軟件的開發(fā)。從上可以看出delphi在開發(fā)數(shù)據(jù)庫性質(zhì)的管理軟件十分方便和快捷。2. 22數(shù)據(jù)庫的選擇usb key文件加密管理系統(tǒng)的數(shù)據(jù)庫選用的是absolute databaseo absolute database是borland數(shù)據(jù)庫引擎(bde)的替代品。具有高速,健壯,易用的特點。 使用absolute database不需要特別的安裝和配置。該系統(tǒng)在連接數(shù)據(jù)庫用到了以下兒

19、個數(shù)據(jù)庫引擎組件,如表1所示: 表1組件表 組件中文名用途tdatasource數(shù)據(jù)源組件作為數(shù)據(jù)集組件(ttable, tquery, tstoredproc)與數(shù)據(jù)控制組件(tdbgdd, tdbedit)之間傳送數(shù)據(jù)的通道。ttable數(shù)據(jù)表組件通過bde存取磁盤上數(shù)據(jù)庫表,再為tdatasource 供數(shù)據(jù)源,使得數(shù)據(jù)控制組件能夠冇效地從ttable屮訪問數(shù)據(jù)并能 顯示和編輯其中的數(shù)據(jù)。tquery數(shù)據(jù)查詢組件利用sql語言訪問數(shù)據(jù)庫表中的數(shù)據(jù),再為tdatasource提供數(shù)據(jù)源,實現(xiàn)數(shù)據(jù)控制組件對數(shù)據(jù)庫的訪問。tdatabase數(shù)據(jù)庫組件肖應(yīng)用程序要登錄到一個遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫時

20、,可以用該組件來建立應(yīng)用程序數(shù)據(jù)庫永久性的連接。2. 2.3開發(fā)工具的選擇現(xiàn)在有許多的第三方控件支持delphi, usb key文件加密管理系統(tǒng)使用了 dev express db tress 和 dev express quantum grid 這兩個控件1) express db tress:強(qiáng)大的樹型結(jié)構(gòu)列表的控件。express db tress為vcl開發(fā)者們提供了一個最高級的樹形列表技術(shù)。express db tress是一個功能強(qiáng)大,已打包的組件庫,它可以幫助你創(chuàng)建殺手 級軟件,為你的最終用戶提供難以置信的功能,只需要很少的代碼就可以實現(xiàn)用 戶的需求。2) express qu

21、antum grid:表格控件。它是樹形列表控件和數(shù)據(jù)編輯控件的控件庫,適合于delphi和c+ builder平 臺下的應(yīng)用開發(fā)。該組件是基于底層開發(fā)出來的,而且是純粹的本地化的可視控 件庫,特別設(shè)計用來開發(fā)引人注目的應(yīng)用程序,將令人難以置信的特性傳遞給終 端用戶,從而使你的程序產(chǎn)品在激烈的競爭中取得優(yōu)先地位,而實現(xiàn)這一切不需 要編寫簡單的一行代碼。2. 2. 4開發(fā)硬件的選擇利用usb key對文件進(jìn)行加密和解密時,都需要有一把lsb key碩件鎖作為 支配。在眾多的key中選用rockey2加密鎖作為這個usb key。因為rockey2加 密鎖是安全性比較高的免驅(qū)動的usb設(shè)備,同時售

22、價低。采用的是傳統(tǒng)eprom結(jié) 構(gòu)。它制作容易,使用方便。而且它方便攜帶,記錄的空間也比較大。適合各類 人員對文件進(jìn)行加密。利用rockey2己經(jīng)可以滿足該設(shè)計的需求。2. 3 rockey2 加密鎖2. 3. 1 rockey2加密鎖簡介rockey2加密鎖是為軟件開發(fā)商提供的一種智能型的軟件加密工具,它包含 一個安裝在計算機(jī)并行口或usb 口上的硬件,及一套適用于各種語言的接口軟 件和工具軟件。加密狗基于硬件加密技術(shù),其目的是通過對軟件與數(shù)據(jù)的加密防 止知識產(chǎn)權(quán)被非法使用。rockey2加密鎖是一種比較簡化型的加密鎖。適合各類人員對信息進(jìn)行加密。 用戶可以對自己電腦里面的私人信息進(jìn)行加密,

23、公司可以對內(nèi)部機(jī)密信息進(jìn)行加 密等等。rockey2加密鎖是一款可以支持軟件保護(hù)應(yīng)用和身份認(rèn)證應(yīng)用的多功能,免 驅(qū)動的usb設(shè)備。2. 3. 2 rockey2加密鎖特點其特點如下:a) usb無驅(qū)設(shè)備b) 全球唯-硬件idc) 提供外殼加密工具d) 2.5k用戶使用空間e) 標(biāo)準(zhǔn)usb1. 1設(shè)備,支持usb2. 0接口f) 提供多種軟件接口: delphi. foxpro> java、pb、vb、vc、vs. net 等2. 3. 3 rockey2加密鎖優(yōu)點rockey2具有以下一些優(yōu)點:(1)兼容性好它具有高度的透明性,特別是對多個相同的rockcy2加密鎖也可以使用usb hu

24、b并聯(lián)在一起使用,相互之間不會有干擾。(2) 速度快對于使用rockcy2加密鎖加密后的軟件,其運行速度同加密前的區(qū)別并不 大,它能夠在很短的時間內(nèi)處理完畢,保證用戶程序的順暢運行。(3) 使用簡便rockcy2加密鎖最大限度的簡化了接口。可以在很短的時間內(nèi)掌握它的使用 方法,從而大大的節(jié)約了時間。2. 3.4 rockey2加密鎖要點說明每一把rockey2加密鎖除了有1個獨一無二的“硬件1d外”,述有1個 用戶可設(shè)定的“用戶id” ,我們定義“硬件1d”為hid, “用戶id”為u1d, 這2個id都是32bit位的dword數(shù)值。每把加密鎖都是倚賴這2個1d作 為獨一無二的識別標(biāo)志。當(dāng)對

25、rockey2加密鎖還沒有進(jìn)行初始化的時候,缺省 的u1d為0,這時候雖然能夠使用這個等于0的u1d來打開加密鎖并進(jìn)行讀 寫操作,但無法獲得正確的hid,因為當(dāng)u1d等于0的時候,表示的是岀廠狀 態(tài),這時候hid也會返回0o只有當(dāng)用戶設(shè)定了自己的u1d以后,才能夠獲得 正確的hido在用戶生成uid的時候需要給出1個長度不超過64個字節(jié)的字 符串作為種子,加密鎖會根據(jù)這個種子生成u1d,這個生成算法是在加密鎖內(nèi)部 完成的,而且是不可逆的,也就是說,只有生成者才知道什么樣的種子能生成什 么樣的u1d,別的人即使知道u1d,也能夠調(diào)用這個計算過程,但因為不知道種 子是什么,是無法生成你的u1d的。

26、另外在生成u1d的時候,能夠指定加密 鎖的eprom是否是可寫的,如果設(shè)定為不可寫,整個eprom處于寫保護(hù)狀態(tài)。3 usb key文件加密工具系統(tǒng)詳細(xì)設(shè)計3. 1系統(tǒng)功能模塊分析總體模塊分為key的管理和客戶端兩部分。在key的管理方面我們需要把 key里面記錄的信息都保存到數(shù)據(jù)庫里面,方便我們查詢、修改、添加和刪除key 里面的信息。對每把鎖都進(jìn)行管理,防止有同號鎖出現(xiàn)。如果加密鎖因為某種情 況損壞或者是丟失了,那么可以通過數(shù)據(jù)庫里面記錄的信息復(fù)制一把相同的鎖, 這樣就不用擔(dān)心由于找不到鎖而不能對已加密的文件進(jìn)行解密操作。對加密鎖進(jìn) 行更加完善的管理,才能進(jìn)一步保障被加密文件的安全,讓用戶

27、才會更加放心的 使用??蛻舳瞬糠种饕峭瓿刹僮鞣矫娴墓δ???蛻舳酥饕▋煞矫嬉?文件 加密和文件解密。對文件進(jìn)行加密時,要利用usb key中的密碼對文件進(jìn)行加密。 這就需要從key里面讀取岀密碼并利用該密碼對文件進(jìn)行加密。并且對該密碼進(jìn) 行md5換算。得到密碼的md5值,把這個值稱為xid。對文件進(jìn)行解密時,先從 key里面讀取出密碼,然后對密碼進(jìn)行md5換算,如果換算后的xid與被加密文 件的xid 一樣就可以成功對文件進(jìn)行解密,否則不能對文件解密。該設(shè)計主要是管理員對用戶以及擁有的usb key信息進(jìn)行操作管理,功能說 明如下:1)分類管理:設(shè)置創(chuàng)建新分類和子分類。通過按地區(qū)、時間等對

28、用戶進(jìn)行 分類,以方便進(jìn)行管理。2)客戶信息管理:實現(xiàn)對客戶信息的添加、刪除和修改。也就是系統(tǒng)中的 添加、編輯和查看客戶模塊。3)rockcy2的初始化:實現(xiàn)對rockey2的初始化,通過種子生成對文件加 密的密鑰,還有uido初始化過后并把rockcy2的相關(guān)信息(包括密鑰和硬件id) 記錄到管理系統(tǒng)中。系統(tǒng)功能圖如下:圖2系統(tǒng)功能結(jié)構(gòu)圖3. 2r0ckey2加密鎖內(nèi)存分配rockey2加密鎖總共有2560個字節(jié),為了便于管理,把usb key的存儲空 間分配成5個段,每個段為512個字節(jié)。在把每個段劃分成16個存儲區(qū),每個 區(qū)32個字節(jié)。這樣便于對key的存儲空間進(jìn)行統(tǒng)一的分配和管理。以后

29、向key的存儲區(qū)里面寫入的信息時,信息都會自動保存到相關(guān)的位置。表2內(nèi)存分配示意圖12345678101112131115160nullsnmd5un12341) null:空值,沒使用2) sn:密碼3) md5:密碼的md5值,用于識別用戶4) un:用戶名3. 2數(shù)據(jù)庫設(shè)計3. 2.1數(shù)據(jù)庫需求分析作為一個具有一定應(yīng)用價值的管理系統(tǒng),從本質(zhì)上說其操作的對象為數(shù)據(jù)庫 中存儲的具體記錄。因此,不僅需要所使用的數(shù)據(jù)庫系統(tǒng)具有比較高的穩(wěn)定性、 安全性下保持足夠響應(yīng)的能力,還要求設(shè)計者清楚需求,做岀合理的數(shù)據(jù)庫邏輯 結(jié)構(gòu)設(shè)計,以提高數(shù)據(jù)庫的利用效率和減少數(shù)據(jù)兀余。以這種思想作為設(shè)計策略,分析出系統(tǒng)

30、的以下兒項需求:(1) 管理員可以實現(xiàn)對用戶的分類(2) 管理員可以實現(xiàn)對用戶信息的添加,編輯和查看。(3) 管理員可以初始化用戶擁有的rockey23. 2. 2數(shù)據(jù)庫實體關(guān)系設(shè)計通過以上的需求分析,設(shè)計出數(shù)據(jù)庫的邏輯結(jié)構(gòu)一一e-r圖,從這種邏輯 結(jié)構(gòu)有可以建立數(shù)據(jù)庫的物理結(jié)構(gòu)即表結(jié)構(gòu)。根據(jù)需求設(shè)計擊三個數(shù)據(jù)表,分別 是:客戶信息表(clients), key表(keys),分類表(groups)其結(jié)構(gòu)及關(guān)系如圖1 所示。圖3客戶與客戶分類關(guān)系圖圖4客戶與key關(guān)系圖3. 2. 3數(shù)據(jù)庫邏輯設(shè)計確定了數(shù)據(jù)庫的邏輯關(guān)系和數(shù)據(jù)結(jié)構(gòu)之后,進(jìn)一步將以上所述的四個數(shù)據(jù)表 由概念結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)庫系統(tǒng)所支

31、持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié) 構(gòu)。表3所示為客戶信息表(clients),記錄了管理員所管理的客戶的相關(guān)信息。表 3 dients列名數(shù)據(jù)類型長度cgid(pk)integer4cnamcstring50caddressstring50ccontactstring20cphonestring100cmobilestring40cfaxstring40cwebstring25cemai1string40表4所示為分類表(groups),記錄管理員按照什么方式進(jìn)行分類。 表 4 groups列名數(shù)據(jù)類型長度gtd(pk)autotnc4gpidstring20gnamcstring40表

32、5所示為keys表,記錄了客戶所擁有的所有rockey2的信息,包括對文件 加密解密的密碼以及硬件id號。表 5 keys列名數(shù)據(jù)類型長度ktd(pk)autotnc4kctdstring20kiiidstring40kpassstring32kotherstring204應(yīng)用以及編碼4.1初始化以及寫密碼的過程的應(yīng)用與編碼初始化是本設(shè)計的一個重要過程。通過加密鎖的內(nèi)存分配可以知道,加密鎖 里面存儲有4個數(shù)據(jù):null (辨別是否初始化);sn (密碼);md5 (密碼的md5 值);un (用戶名)。一把新的加密鎖里面的數(shù)據(jù)都是空的,必須向里面寫入數(shù)據(jù) 才可以使用。首先定義一個種子,種子的長

33、度不能超過64個字節(jié)。它由數(shù)字和字母組成。 securestr-f6a24cac3922c69lad2ce13b64d83c546f994fliel4ada832ddlb9el67e 64464,定義種子之后,就可生成uid二t921722780'。這個uid是唯一的,也 就是說以后所有初始化的usb key都有相同的uid。在隨機(jī)產(chǎn)牛密碼的過程中,定義一個函數(shù)genpass(),并且把密碼的范圍 限制在32個字節(jié)以內(nèi)。然后需要隨機(jī)生成密碼,在隨機(jī)生成密碼的過程中調(diào)用 random(93)函數(shù)。目的是讓它產(chǎn)生一個從1到92之間的隨機(jī)數(shù)。但是asc表中 的32為空,所以就取32之后的值。

34、具體實現(xiàn)代碼為:beg inrandomizc;for i := 1 to 32 do beginpass := pass + char(random(93) + 33);end;result := pass;end;隨機(jī)密碼產(chǎn)生后,在初始化過程中就利用種子生成uid。在此過程中定義函 數(shù) initrockey(esced: string; var uid: cardinal; rcadonly: boolean),對 key進(jìn)行初始化。然后利用該u1d產(chǎn)生密碼,產(chǎn)生密碼后就直接寫入key里面。/其關(guān)鍵代碼為:str := esecd;if readonlythenretcodc :=ry2

35、genuid (handle,guid, pchar(str), rockey2 enable write prot ect)elseretcodc :=ry2 genuid (handle,guid, pchar(str), rockey2 disable write pro tect);省略uid := guid;產(chǎn)生的guid的值就是u1d的值。最后在對鎖進(jìn)行初始化時,需要鎖給出一 個詢問信息。initrockyquery (),詢問是否對鎖進(jìn)行初始化。mcssagcdlg(,初始化 rockcy?,, mtconfirmation, mbycs, mbno, 0) =6。confirm

36、ation在這里使用是在詢問框中顯示yes或則n0這兩個確認(rèn)按鈕。 寫密碼的過程中,定義函數(shù)writepass (),寫密碼前,述需要對key定義 一個區(qū)段,不然密碼寫進(jìn)去后會不知道存放在什么地方;自定義把密碼存放在 33-64這個存儲區(qū)域內(nèi)。然后直接把密碼write進(jìn)去。/部分代碼為:if (not rcadsection(0, str) then exit;if not openkey then exit;md5str := md5digesttostr(md5string(pass);str := stuffstring(str, 33, 32, pass);str := stuffst

37、ring(str, 65, 32, md5str);retcode := ry2_write(hkey, 0, pchar(str);if retcode < 0 thenbeginclosckcy;exit;end;在這里需耍說明一下加密鎖是如何來識別是用該加密鎖來加密的文件??梢?用來作為識別的有三個元素,包括加密鎖的硬件id,對文件加密的密碼,再就 是對文件加密的密碼的md5值。下面我們來比較一下這三個元素哪個更加適合: 首先用加密鎖的硬件id,這種方法的不足就是每一把碩件1d的值的是不同的, 如果加密鎖遺失,將不能打開文件。其次用對文件加密的密碼,這種方法的不足 就是密碼是明文,

38、不適合用來識別。最后一種就是用對文件加密的密碼的md5值, 由于md5算法是現(xiàn)在一種相對比較安全的一種加密算法,很難被破解。因此我們 采用了最后一種方法來識別它們。4. 2管理界面的設(shè)計4. 2.1管理主界面設(shè)計圖5鎖管理界面4. 2. 2分類管理模塊的設(shè)計-i總分笑i四丿|地區(qū).重慶地區(qū)由 2007圖6添加客戶界面管理員可以按照不同的分類方式進(jìn)行分類,便于對客戶的管理。具體代碼如下:procedure tfmain. newgroupexecute (sender: tobject);varsnode: ttreenode;pid: integer;beginsnode := groupst

39、ree.selected;if assigned(snode) then beginptd :二 unitdm.rockydm. tgroups. fieldbyname(' gptd,). astnteger;unitdm. rockydm. tgroups. append;unitdm. rockydm. tgroups. fieldbynamegpid,). aslnteger := pid;unitdm. rockydm. tgroups. fieldbynamec gname,). asstring :='新分 類';unitdm.rockydm. tgrou

40、ps. post;end;end;4. 2. 3添加客戶模塊的設(shè)計圖7添加客戶界面在分類中添加一個客戶,并寫入數(shù)據(jù)庫,用到了 append方法,該方法是添 加一條新記錄到數(shù)據(jù)集中。unitdm. rockydm. tclients. append也就是將客戶信 息記錄到數(shù)據(jù)庫的clients表當(dāng)中。具體代碼如下:function addclient():boolean;beginresuit:二true;with tfclienteditcreate(n訂)do begincaption:二'添加客戶;unitdm. rockydm. tclients. append;module:=

41、1;showmodal;end;end;4. 2. 4編輯客戶模塊的設(shè)計圖8客戶編輯界面可以進(jìn)行修改客戶信息,也就是可以進(jìn)行編輯客戶信息,點擊確定后將其信 息寫入數(shù)據(jù)庫對應(yīng)的表中。用到了 edit方法,該方法是將記錄的狀態(tài)設(shè)置為 dsedit,記錄在編輯狀態(tài)。unitdm. rockydm. tclients. edi t就是將修改的客戶信 息寫入到了 clients表中。具體代碼如下:function editclient():boolean;beginresult:=true;with tfclientedit. create(nil) do begincaption:二'編輯客戶

42、;unitdm. rockydm. tclients. edit;module:=2;showmodal;end;end;4. 2. 5査看客戶模塊的設(shè)計客戶:|習(xí)林手機(jī) *5908141443冊成糠息工程贛麒戯人:|酣網(wǎng)址電話:|電郵:|編輯客戶圖9客戶查看界面該窗口只能查看不能修改客戶信息,所以定義bc. visible:二false。 具體代碼如下:function viewclient():boolcan;beginresult:=truc;with tfclicntedit. creatc(nil) do begincaption:-編輯客戶'bc visible:二fals

43、e;module:=3;showmodal;end;end;4. 2. 6 rockey初始化模塊圖10初始化界面當(dāng)rockey2插入電腦時要讀取它的密碼和硬件id以及客戶的用戶名,如果它沒有初始化則rockcy2的硬件id為零,那么就需要進(jìn)行初始化,寫入密碼, 以及用戶名。如果rockey2的硬件id不為零表示該rockey2已經(jīng)被初始化,就 不再需要進(jìn)行初始化了,則顯示初始化失敗。keyma.嚴(yán)x、初始化失???0k圖11初始化失敗初始化以后,還需要將rockcy2的信息寫入對應(yīng)客戶的資料中去,就是將 rockey2的用戶名,密碼,以及硬件id號記錄下來。procedure t fma in

44、. readrockeyexecute(sender: tobject);vargid, ctd, kid: integer;pass, hid, owner, apass: string;beginif not readpass(pass, hid, owner) then begin/鑰匙沒有初始化或者不是為rockey提供的鑰匙if hid = '0' then begin鑰匙沒有初始化if initrockyquery(false) then begin/寫入密碼showmessage ('成功初始化!');apass := genpass;if wri

45、 lepass (apass) then showmessage('密碼寫入成功')else showmessage (?密碼寫入失敗');end else showmessage (,初始化失??!');exit;end;if hid <> ' o' then begin/不是rockey的鑰匙showmessage (?該鑰匙已經(jīng)初始化,但是好像不是為rockey使用的!');exit;end;end else beginif rockydm.findkcy(hid, gid, cid, kid) then beginroc

46、kydm tgroups locate ('gid', gid, locaselnscnsitivc);rockydm.tclicnts. locate(' cid,, cid, locaselnscnsitivc);rockydm. tkeys. locate (' kh1d,, hid, locaselnsensitive);end else begin/數(shù)據(jù)庫中沒有記錄,添加到數(shù)據(jù)庫rockydm. tkeys. append;rockydm. tkeys. fieldvalues'khid' := hid;rockydm.tkeysfic

47、ldvalucs'kpass' := pass;rockydm. tkeys. post;showmcssagc(,數(shù)據(jù)添加成功');end;end;end;4. 3數(shù)據(jù)庫操作下面介紹如何找到客戶對應(yīng)的rockey2加密鎖,首先要定義2個常量 find_client_by_hld, find_group_by_cido 這兩個常量定義了 2 條 sql 語句。find client by hid = 'sclcct kid, kcid from keys where khid=%s,; 它定義了從keys表中查詢碩件id等丁,s的客戶信息。find_group_by_cid = ,select cg1d from clients where cid=%d,;它定 義了從clients表中查詢客戶id等于%d的客戶在哪個分類當(dāng)中。當(dāng)客戶的硬件id及hid與定義的常量也就是定義的查詢語句想匹配的時候就將 其碩件id號添加到數(shù)據(jù)庫,以便以后rockey2丟失的時候,查到其丟失的加密 鎖,然后復(fù)制一把與以前的加密鎖加密密碼一樣的鎖。其代碼如下:function trockydm.findkey(hid: strin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論