
![[優(yōu)秀畢業(yè)設計精品] access加密文件的解密工具的開發(fā)研究_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/7/12/ceacb40a-6ed0-4f2b-87c5-79fbb18e60b3/ceacb40a-6ed0-4f2b-87c5-79fbb18e60b31.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 本科生畢業(yè)論文</b></p><p> Access加密文件的解密工具的開發(fā)研究</p><p> 系 (部):電子與通信工程系</p><p> 專 業(yè): 通信工程 </p><p> 學 號: </p>&
2、lt;p> 學生姓名: </p><p> 指導教師: 高級工程師</p><p><b> 2009年6月</b></p><p><b> 摘 要</b></p><p> 計算機信息的保密問題顯得越來越重要,無論是個人信息通信還是電子商務發(fā)展,都迫切需
3、要保證Internet網上信息傳輸的安全,需要保證信息安全。其中,信息安全的核心是密碼技術。信息保密的理論基礎是密碼學,根據現代密碼學理論,個好的加密算法的安全性只依賴于密鑰,加密算法的公開與否不影響其安全性,現代密碼學經過幾十年研究和發(fā)展,已經發(fā)明了許多安全性很高的加密算法,并且被廣泛地應用在各種信息安全產品中,其中數據加密技術是密碼學的個重要應用領域,數據加密產品由于實現的思路方法和層次區(qū)別,決定了其應用領域和范圍。</p&g
4、t;<p> 信息安全問題涉及到國家安全、社會公共安全,世界各國已經認識到信息安全涉及重大國家利益,是互聯(lián)網經濟的制高點,也是推動互聯(lián)網發(fā)展、電子政務和電子商務的關鍵,發(fā)展信息安全技術是目前面臨的迫切要求,除了上述內容以外,網絡與信息安全還涉及到其他很多方面的技術與知識,例如:黒客技術、防火墻技術、入侵檢測技術、病毒防護技術、信息隱藏技術等。一個完善的信息安全保障系統(tǒng),應該根據具體需求對上述安全技術進行取舍。 <
5、/p><p> 關鍵詞:信息安全,密碼技術,解密技術,加密研究</p><p><b> ABSTRACT</b></p><p> The confidentiality of computer information has become increasingly important, whether individuals or the
6、 development of electronic commerce in information and communication are urgently needed to ensure that information transmitted over the Internet security, the need to ensure information security. Which is the core of in
7、formation security and cryptography? Confidentiality of information theory is based on cryptography, the basis of modern cryptography theory, a good encryption algorithm only </p><p> Information security i
8、ssues related to national security, social public security, countries around the world have come to understand that information security and vital national interests involved, is the commanding height of the Internet eco
9、nomy, but also to promote the development of the Internet, e-government and e-commerce the key to the development of information security technology is currently facing an urgent need, in addition to the above-mentioned
10、content, network and information secur</p><p> Keywords: information security, cryptography, decryption, encryption research</p><p><b> 目 錄</b></p><p> 摘 要- 1 -<
11、;/p><p> ABSTRACT- 2 -</p><p> 第1章 加密技術的應用1</p><p> 1.1 加密技術的由來1</p><p> 1.1.1 加密技術的近期應用1</p><p> 1.1.2 加密技術在計算機上的應用1</p><p> 1.2 加密的概
12、念2</p><p> 1.2.1 加密的理由2</p><p> 1.2.2 加密的方法3</p><p> 第2章 加密技術的分類4</p><p> 2.1 加密技術的分類4</p><p> 2.1.1 “對稱式”加密技術4</p><p> 2.1.2 “非對
13、稱式” 加密技術4</p><p> 2.2 數據加密的標準5</p><p> 2.3 加密技術在VPN上的應用5</p><p> 第3章 數據庫加密技術7</p><p> 3.1 數據庫加密的必要性7</p><p> 3.2 數據庫加密的基本要求7</p><p>
14、; 3.2.1 字段加密7</p><p> 3.2.2 密鑰動態(tài)管理7</p><p> 3.2.3 合理處理數據7</p><p> 3.2.4 不影響合法用戶的操作8</p><p> 3.3 不同層次實現數據庫加密8</p><p> 3.4 數據庫加密的安全措施8</p>
15、<p> 3.4.1 在用戶進入系統(tǒng)時進行兩級安全控制8</p><p> 3.4.2 防止非法拷貝9</p><p> 3.4.3 安全的數據抽取方式9</p><p> 3.5 數據庫加密系統(tǒng)的結構9</p><p> 第4章 Access數據庫加密技術10</p><p> 4.
16、1 Access數據庫的安全性問題10</p><p> 4.2 Access數據庫的加密技術10</p><p> 4.3 對于Access97文件的研究11</p><p> 第5章Access2000數據庫的研究12</p><p> 5.1 Access2000數據庫的研究12</p><p>
17、; 5.1.1 創(chuàng)建一個空的Access2000文件12</p><p> 5.1.2 創(chuàng)建一個帶有密碼的Access2000文件13</p><p> 5.1.3 對比文件15</p><p> 5.1.4 分析密碼字節(jié)得出密碼16</p><p> 5.1.5 深入分析Access2000的加密技術17</p&g
18、t;<p> 5.2 Access解密工具的開發(fā)研究18</p><p> 5.2.1 解密工具的窗體布局18</p><p> 5.2.2 部分源代碼及其含義19</p><p> 第6章 Access數據庫加密技術的改進26</p><p> 6.1 Access數據庫現有的改進方法26</p>
19、;<p> 6.2 Access數據庫改進設想26</p><p><b> 結 論28</b></p><p><b> 參考文獻29</b></p><p><b> 致 謝30</b></p><p> 第1章 加密技術的應用</
20、p><p> 1.1 加密技術的由來</p><p> 加密作為保障數據安全的一種方式,它不是現在才有的,它產生的歷史相當久遠,它是起源于要追溯于公元前2000年(幾個世紀了),雖然它不是現在我們所講的加密技術(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來
21、保護他們的書面信息。</p><p> 1.1.1 加密技術的近期應用</p><p> 近期加密技術主要應用于軍事領域,如美國獨立戰(zhàn)爭、美國內戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機器是German Enigma機,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于Alan Turing和Ultra計劃以及其他人的努力,終于對德國人的密碼進行了破解。當初,計算機的研究就是為了破解德
22、國人的密碼,人們并沒有想到計算機給今天帶來的信息革命。隨著計算機的發(fā)展,運算能力的增強,過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數據加密方式,如利用ROSA算法產生的私鑰和公鑰就是在這個基礎上產生的。</p><p> 1.1.2 加密技術在計算機上的應用</p><p> 隨著網絡技術的發(fā)展,網絡安全也就成為當今網絡社會的焦點中的焦點,幾乎沒有人不在談論網絡上的安全問
23、題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰(zhàn)心驚。病毒、黑客的猖獗使身處今日網絡社會的人們感覺到談網色變,無所適從。 </p><p> 但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發(fā)現之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所
24、以我們不能有等網絡安全了再上網的念頭,因為或許網絡不能有這么一日,就像“矛”與“盾”,網絡與病毒、黑客永遠是一對共存體。</p><p> 現代的電腦加密技術就是適應了網絡安全的需要而應運產生的,它為我們進行一般的電子商務活動提供了安全保障,如在網絡中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術也不是什么新生事物,只不過應用在當今電子商務、電腦網絡中還是近幾年的歷史。但是加密技術在網絡上的應用
25、上卻扮演著十分重要的角色。從而達到安全使用網絡的目的,是一門在網絡上不可缺少的技術。</p><p><b> 1.2 加密的概念</b></p><p> 數據加密的基本過程就是對原來為明文的文件或數據按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的
26、目的。該過程的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。</p><p> 加密在網絡上的作用就是防止有用或私有化信息在網絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某種意義上來講意味著其安全體系的全面崩潰。</p><p> 數字簽名就是基于加密技術的,它的作用就是用來確定用戶是否是真實的。應用最多的還是電子
27、郵件,如當用戶收到一封電子郵件時,郵件上面標有發(fā)信人的姓名和信箱地址,很多人可能會簡單地認為發(fā)信人就是信上說明的那個人,但實際上偽造一封電子郵件對于一個通常人來說是極為容易的事。在這種情況下,就要用到加密技術基礎上的數字簽名,用它來確認發(fā)信人身份的真實性。</p><p> 類似數字簽名技術的還有一種身份認證技術,有些站點提供入站FTP和WWW服務,當然用戶通常接觸的這類服務是匿名服務,用戶的權力要受到限制,但
28、也有的這類服務不是匿名的,如某公司為了信息交流提供用戶的合作伙伴非匿名的FTP服務,或開發(fā)小組把他們的Web網頁上載到用戶的WWW服務器上,現在的問題就是,用戶如何確定正在訪問用戶的服務器的人就是用戶認為的那個人,身份認證技術就是一個好的解決方案。</p><p> 在這里需要強調一點的就是,文件加密其實不只用于電子郵件或網絡上的文件傳輸,其實也可應用靜態(tài)的文件保護,如PIP軟件就可以對磁盤、硬盤中的文件或文件
29、夾進行加密,以防他人竊取其中的信息[1]。</p><p> 1.2.1 加密的理由</p><p> 當今網絡社會選擇加密已是我們別無選擇,其一是我們知道在互聯(lián)網上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對于一些大公司和一些機密文件在網絡上傳輸。而且這種不安全性是互聯(lián)網存在基礎——TCP/IP協(xié)議所固有的,包括一些基于TCP/IP的服務;另一方面,互聯(lián)網給眾多的商家?guī)?/p>
30、來了無限的商機,互聯(lián)網把全世界連在了一起,走向互聯(lián)網就意味著走向了世界,這對于無數商家無疑是夢寐以求的好事,特別是對于中小企業(yè)。為了解決這一對矛盾、為了能在安全的基礎上大開這通向世界之門,我們只好選擇了數據加密和基于加密技術的數字簽名。</p><p> 加密在網絡上的作用就是防止有用或私有化信息在網絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某
31、種意義上來講意味著其安全體系的全面崩潰。</p><p> 通過網絡進行登錄時,所鍵入的密碼以明文的形式被傳輸到服務器,而網絡上的竊聽是一件極為容易的事情,所以很有可能黑客會竊取得用戶的密碼,如果用戶是Root用戶或Administrator用戶,那后果將是極為嚴重的。</p><p> 這樣的例子實在是太多了,解決上述難題的方案就是加密,加密后的口令即使被黑客獲得也是不可讀的,加密后
32、的文件或者數據沒有收件人的私鑰也無法解開,文件和數據將成為一大堆無任何實際意義的亂碼。總之無論是單位還是個人在某種意義上來說加密也成為當今網絡社會進行文件或郵件安全傳輸的時代象征。</p><p> 1.2.2 加密的方法</p><p> 加密技術是電子商務采取的主要安全保密措施,是最常用的安全保密手段,利用加密技術手段把重要的數據變?yōu)閬y碼(加密)傳送,到達目的地后再用相同或不同的手
33、段還原(解密)。加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與一竄數字(密鑰)的結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼和解碼的一種算法。在安全保密中,可通過適當的密鑰加密技術和管理機制來保證網絡的信息通訊安全。密鑰加密技術的密碼體制分為對稱密鑰體制和非對稱密鑰體制兩種。相應地,對數據加密的技術分為兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數據加密標準(DNS,
34、Data Encryption Standard)算法為典型代表,非對稱加密通常以RSA(Rivest Shamir Ad1eman)算法為代表。對稱加密的加密密鑰和解密密鑰相同,而非對稱加密的加密密鑰和解密密鑰不同,加密密鑰可以公開而解密密鑰需要保密[2]。</p><p> 第2章 加密技術的分類</p><p> 2.1 加密技術的分類</p><p>
35、 加密技術通常分為兩大類:“對稱式”和“非對稱式”。</p><p> 2.1.1 “對稱式”加密技術</p><p> 對稱加密采用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學中叫做對稱加密算法,對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標準(DNS),另一個對稱密鑰加密系統(tǒng)是國際數據加密算法(ID
36、EA),它比DNS的加密性好,而且對計算機功能要求也沒有那么高。IDEA加密標準由PGP(Pretty Good Privacy)系統(tǒng)使用?!皩ΨQ式” 加密技術這種加密技術目前被廣泛采用,如美國政府所采用的DES加密標準就是一種典型的“對稱式”加密法,它的Session Key長度為56Bits。</p><p> 2.1.2 “非對稱式”加密技術</p><p> 1976年,美國學
37、者Dime和Henman為解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協(xié)議,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是“公開密鑰系統(tǒng)”。相對于“對稱加密算法”這種方法也叫做“非對稱加密算法”。與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對
38、數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。</p><p> 通俗的說非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網絡上傳輸加
39、密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題[3]。</p><p> 2.2 數據加密的標準</p><p> 最早、最著名的保密密鑰或對稱密鑰加密算法DES(Data Encryption Standard)是由
40、IBM公司在70年代發(fā)展起來的,并經政府的加密標準篩選后,于1976年11月被美國政府采用,DES隨后被美國國家標準局和美國國家標準協(xié)會(American National Standard Institute,ANSI)承認。DES使用56位密鑰對64位的數據塊進行加密,并對64位的數據塊進行16輪編碼。與每輪編碼時,一個48位的"每輪"密鑰值由56位的完整密鑰得出來。DES用軟件進行解碼需用很長時間,而用硬件解碼
41、速度非常快。幸運的是,當時大多數黑客并沒有足夠的設備制造出這種硬件設備。在1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用于DES的解密,而且需要12個小時的破解才能得到結果。當時DES被認為是一種十分強大的加密方法。</p><p> 隨著計算機硬件的速度越來越快,制造一臺這樣特殊的機器的花費已經降到了十萬美元左右,而用它來保護十億美元的銀行,那顯然是不夠保險了。另一方面,如果只用它來保護一臺普通
42、服務器,那么DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個服務器而花那么多的錢破解DES密文。</p><p> 另一種非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大數不可能被質因數分解假設的公鑰體系。簡單地說就是找兩個很大的質數。一個對外公開的為“公鑰”(Publickey),另一個不告訴任何人,稱為"私鑰”(Privatekey)。這兩個密
43、鑰是互補的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。</p><p> 假設用戶甲要寄信給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到后就可以用自己的私鑰解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道乙的公鑰,他們都可以給乙發(fā)信,那么乙怎么確信是不是甲的來信呢?那就要用到基于加密技術的數字簽名了。
44、</p><p> 甲用自己的私鑰將簽名內容加密,附加在郵件后,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文被乙收到以后,乙用自己的私鑰將郵件解密,得到甲的原文和數字簽名,然后用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了[4]。</p><p> 2.3 加密技術在VPN上的應用</p
45、><p> 現在,越多越多的公司走向國際化,一個公司可能在多個國家都有辦事機構或銷售中心,每一個機構都有自己的局域網LAN(Local Area Network),但在當今的網絡社會人們的要求不僅如此,用戶希望將這些LAN連結在一起組成一個公司的廣域網,這個在現在已不是什么難事了。</p><p> 事實上,很多公司都已經這樣做了,但他們一般使用租用專用線路來連結這些局域網,他們考慮的就是
46、網絡的安全問題。現在具有加密/解密功能的路由器已到處都是,這就使人們通過互聯(lián)網連接這些局域網成為可能,這就是我們通常所說的虛擬專用網(Virtual Private Network ,VPN)。當數據離開發(fā)送者所在的局域網時,該數據首先被用戶端連接到互聯(lián)網上的路由器進行硬件加密,數據在互聯(lián)網上是以加密的形式傳送的,當達到目的LAN的路由器時,該路由器就會對數據進行解密,這樣目的LAN中的用戶就可以看到真正的信息了。</p>
47、<p> 第3章 數據庫加密技術</p><p> 3.1 數據庫加密的必要性</p><p> 目前,計算機大批量數據存儲的安全問題、敏感數據的防竊取和防篡改問題越來越引起人們的重視。數據庫系統(tǒng)作為計算機信息系統(tǒng)的核心部件,數據庫文件作為信息的聚集體,其安全性將是信息產業(yè)的重中之重。</p><p> 3.2 數據庫加密的基本要求</p&
48、gt;<p> 一個良好的數據庫加密系統(tǒng)應該滿足的基本要求。字段加密,密匙動態(tài)管理,合理處理數據,不影響合法擁護的操作。</p><p> 3.2.1 字段加密 </p><p> 在目前條件下,加/脫密的粒度是每個記錄的字段數據。如果以文件或列為單位進行加密,必然會形成密鑰的反復使用,從而降低加密系統(tǒng)的可靠性或者因加脫密時間過長而無法使用。只有以記錄的字段數據為單位進
49、行加/脫密,才能適應數據庫操作,同時進行有效的密鑰管理并完成“一次一密”的密碼操作。 </p><p> 3.2.2 密鑰動態(tài)管理 </p><p> 數據庫客體之間隱含著復雜的邏輯關系,一個邏輯結構可能對應著多個數據庫物理客體,所以數據庫加密不僅密鑰量大,而且組織和存儲工作比較復雜,需要對密鑰實現動態(tài)管理。 </p><p> 3.2.3 合理處理數據 &l
50、t;/p><p> 這包括幾方面的內容。首先要恰當地處理數據類型,否則 DBMS將會因加密后的數據不符合定義的數據類型而拒絕加載;其次,需要處理數據的存儲問題,實現數據庫加密后,應基本上不增加空間開銷。在目前條件下,數據庫關系運算中的匹配字段,如表間連接碼、索引字段等數據不宜加密。文獻字段雖然是檢索字段,但也應該允許加密,因為文獻字段的檢索處理采用了有別于關系數據庫索引的正文索引技術。 </p>&l
51、t;p> 3.2.4 不影響合法用戶的操作 </p><p> 加密系統(tǒng)影響數據操作響應時間應盡量短,在現階段,平均延遲時間不應超過1/10秒。此外,對數據庫的合法用戶來說,數據的錄入、修改和檢索操作應該是透明的,不需要考慮數據的加/脫密問題。</p><p> 3.3 不同層次實現數據庫加密 </p><p> 我們可以考慮在三個不同層次實現對數據庫
52、數據的加密,這三個層次分別是OS、DBMS內核層和DBMS外層。 </p><p> 在OS層,無法辨認數據庫文件中的數據關系,從而無法產生合理的密鑰,也無法進行合理的密鑰管理和使用。所以,在OS層對數據庫文件進行加密,對于大型數據庫來說,目前還難以實現。 </p><p> 在DBMS內核層實現加密,是指數據在物理存取之前完成加/脫密工作。這種方式勢必造成DBMS和加密器(硬件或軟件
53、)之間的接口需要DBMS 開發(fā)商的支持。這種加密方式的優(yōu)點是加密功能強,并且加密功能幾乎不會影響DBMS 的功能。其缺點是在服務器端進行加/脫密運算,加重了數據庫服務器的負載。 </p><p> 比較實際的做法是將數據庫加密系統(tǒng)做成DBMS的一個外層工具。采用這種加密方式時,加/脫密運算可以放在客戶端進行,其優(yōu)點是不會加重數據庫服務器的負載并可實現網上傳輸加密,缺點是加密功能會受一些限制。圖中,“定義加密要求
54、工具”模塊的主要功能是定義如何對每個數據庫表數據進行加密。在創(chuàng)建了一個數據庫表后,通過這一工具對該表進行定義;“數據庫應用系統(tǒng)”的功能是完成數據庫定義和操作。數據庫加密系統(tǒng)將根據加密要求自動完成對數據庫數據的加/ 脫密[5]。</p><p> 3.4 數據庫加密的安全措施</p><p> 數據庫加密系統(tǒng)首先要解決系統(tǒng)本身的安全性和可靠性問題,在這方面,可以采用以下幾項安全措施:在用
55、戶進入系統(tǒng)時進行兩級安全控制,防止非法拷貝,安全的數據抽取方式。</p><p> 3.4.1 在用戶進入系統(tǒng)時進行兩級安全控制</p><p> 這種控制可以采用多種方式,包括設置數據庫用戶名和口令,或者利用IC卡讀寫器/指紋識別器進行用戶身份認證。 </p><p> 3.4.2 防止非法拷貝 </p><p> 對于純軟件系統(tǒng),
56、可以采用軟指紋技術防止非法拷貝,當然,如果每臺客戶機上都安裝加密卡等硬部件,安全性會更好。此外,還應該保留數據庫原有的安全措施,如權限控制、備份/恢復和審計控制等。 </p><p> 3.4.3 安全的數據抽取方式 </p><p> 提供兩種卸出和裝入數據庫中加密數據的方式:其一是密文方式卸出,這種卸出方式不脫密,卸出的數據還是密文,在這種模式下,可直接使用 DBMS提供的卸出/裝
57、入工具;其二是明文方式卸出,這種卸出方式需要脫密,卸出的數據是明文,在這種模式下,可利用系統(tǒng)專用工具先進行數據轉換,再使用DBMS提供的卸出/裝入工具完成。</p><p> 3.5 數據庫加密系統(tǒng)的結構</p><p> 數據庫加密系統(tǒng)分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數據庫加/脫密引擎。 </p><p> 數據庫加密系統(tǒng)將用戶對
58、數據庫信息具體的加密要求記載在加密字典中,加密字典是數據庫加密系統(tǒng)的基礎信息。 </p><p> 加密字典管理程序,是管理加密字典的實用程序,是數據庫管理員變更加密要求的工具。 </p><p> 加密字典管理程序通過數據庫加/脫密引擎實現對數據庫表的加密、脫密及數據轉換等功能,此時,它作為一個特殊客戶來使用數據庫加/脫密引擎。 </p><p> 數據庫加
59、/脫密引擎是數據庫加密系統(tǒng)的核心部件,負責在后臺完成數據庫信息的加/脫密處理,對應用開發(fā)人員和操作人員是透明的。 </p><p> 按以上方式實現的數據庫加密系統(tǒng)具有很多優(yōu)點。首先,系統(tǒng)對數據庫的最終用戶完全透明,數據管理員可以指定需要加密的數據并根據需要進行明文/密文的轉換工作;其次,系統(tǒng)完全獨立于數據庫應用系統(tǒng),不需要改動數據庫應用系統(tǒng)就能實現加密功能,同時系統(tǒng)采用了分組加密法和二級密鑰管理,實現了“一次
60、一密”;其三,系統(tǒng)在客戶端進行數據加/脫密運算,不會影響數據庫服務器的系統(tǒng)效率,數據加/脫密運算基本無延遲感覺。 </p><p> 數據庫加密系統(tǒng)能夠有效地保證數據的安全,即使黑客竊取了關鍵數據,他仍然難以得到所需的信息,因為所有的數據都經過了加密。另外,數據庫加密以后,可以設定不需要了解數據內容的系統(tǒng)管理員不能見到明文,大大提高了關鍵數據的安全性[6]。</p><p> 第4章
61、Access數據庫加密技術</p><p> 4.1 Access數據庫的安全性問題</p><p> Access數據庫作為微軟推出的以標準JET為引擎的桌面型數據庫系統(tǒng),由于具有操作簡單、界面友好等特點,成為許多中小型網上應用系統(tǒng)的首選數據庫。Access數據庫在為我們帶來便捷的同時,也帶來了不容忽視的安全問題。</p><p> Access數據庫的設置
62、密碼算法比較簡單,很容易被破解。Access數據庫的文件頭中42H-4EH為密碼區(qū)。設置密碼時,根據所設密碼的ASCII碼與密碼區(qū)的內容進行異或運算,最后將運算的結果存入密碼區(qū)。 </p><p> 在Access數據庫打開之后,數據庫中的所有對象對用戶都將是可用的。對于一些存儲敏感數據的Access數據庫,除了設置數據庫密碼外,應該對數據庫中的數據進行加密。 </p><p> 由此
63、可以看出,Access的安全性有待于進一步提高。</p><p> 4.2 Access數據庫的加密技術</p><p> Access 提供了設置數據庫安全的幾種傳統(tǒng)方法:為打開的數據庫設置密碼,或設置用戶級安全,以限制允許用戶訪問或更改數據庫的哪一部分,以及加密數據庫使用戶無法通過工具程序或字處理程序查看和修改數據庫中的敏感數據。除這些方法之外,還可將數據庫保存為 MDE 文件以刪
64、除數據庫中可編輯的 Visual Basic 代碼以防止對窗體、報表和模塊的設計進行修改。 </p><p> (1)設置密碼。最簡單的方法是為打開的數據庫設置密碼。設置密碼后,打開數據庫時將顯示要求輸入密碼的對話框。只有鍵入正確密碼的用戶才可以打開數據庫。在數據庫打開之后,數據庫中的所有對象對用戶都將是可用的。 </p><p> (2)用戶級安全。設置數據庫安全的最靈活和最廣泛的方
65、法是設置用戶級安全。這種安全類似于很多網絡中使用的方法,它要求用戶在啟動Access 時確認自己的身份并鍵入密碼。 </p><p> (3)加密數據庫。對數據庫進行加密將壓縮數據庫文件,并使用戶無法通過工具程序或字處理程序查看和修改數據庫中的敏感數據[7]。</p><p> 4.3 對于Access97文件的研究</p><p> Access97是一款比
66、較老了的數據庫軟件了。對于Access97的密碼破解,在很多的網站和雜志上都有過一些介紹。因此,對于才了解加密技術的我,決定先去了解Access97數據庫的加密技術與解密方法。然后在對Access2000數據庫進行研究。</p><p> 通過查找資料,終于了解了Access97數據庫的加密方式,現在我在這里簡單的重復一下。</p><p> Access97的密匙是固定的13個字節(jié),
67、而且經過了解知道了Access97文件的密匙是存放在.mdb文件的第0x42字節(jié)處的13個相連的位置中,其13個字節(jié)分別為0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13。將這些位置的代碼與上面的字節(jié)異或后即可得到數據庫的密碼。通過了解Access97數據庫的加密技術和掌握的解密方法,我用這種方法對Access2000數據庫也進行了同樣的解密操作,想試著解開
68、Access2000數據庫的密碼??墒前l(fā)現上面的方法已經無法解開Access2000數據庫的密碼,由此可以知道,Access2000數據庫的加密技術使用的是與Access97不同的加密方式。對于Access2000數據庫到底有什么地方進行了改變,其加密技術是否有什么新的改進,我決定對Access2000進行一些研究。</p><p> 第5章Access2000數據庫的研究</p><p&g
69、t; 5.1 Access2000數據庫的研究</p><p> 對與Access2000數據庫我使用的分析工具是UltraEdit32 v10.00,編程工具我使用的是VB6.0。選擇使用VB進行編程是因為VB使用起來十分的簡單,而且容易上手。</p><p> 5.1.1 創(chuàng)建一個空的Access2000文件</p><p> 首先我創(chuàng)建了一個空密碼的A
70、ccess2000數據庫文件db1.mdb,包含一個表,并且不在文件中添加任何的數據,因此該文件中的每一個字段都是沒有任何數據的。然后保存退出。創(chuàng)建這樣的一個空文件,主要的目的就是為了用來作為一個對比的模板。而不在文件中添加內容,主要是為了避免在比較時出現太多不相同的地方,從而影響密碼字段的判斷。創(chuàng)建過程如圖5.1,圖5.2所示。</p><p> 圖5.1 創(chuàng)建空文件</p><p>
71、 圖5.2 保存空文件</p><p> 5.1.2 創(chuàng)建一個帶有密碼的Access2000文件</p><p> 我將保存好的db1.mdb文件復制一份,命名為db2.mdb。這樣做的目的主要是為了保證其中的數據與db1.mdb文件是完全一致的。然后,我用獨占的方式打開db2.mdb文件,如圖5.3所示。只有使用獨占方式打開,才能對db2.mdb文件進行加密。我對db2.mdb文件
72、加上密碼1234567890123,如圖5.4所示。保存后,退出。</p><p> 圖5.3 以獨占方式打開文件</p><p> 圖5.4 設置文件密碼</p><p> 5.1.3 對比文件</p><p> 現在準備工作就已經完成了,接下來主要是使用UltraEdit32 v10.00程序打開db1.mdb和db2.mdb這2
73、個文件,并且對db1.mdb和db2.mdb這2個文件的各個字節(jié)進行對比,查出哪一些字節(jié)處發(fā)生了變化。我使用的是UltraEdit32中附帶的比較程序,能夠快速的將字節(jié)不同的地方顯示出來。經過一翻對比,終于發(fā)現了2個文件中不同的地方,如圖5.5所示:</p><p><b> 圖5.5 對比結果</b></p><p> 現在我將字節(jié)不同的地方提取出來:</
74、p><p><b> db1.mdb:</b></p><p> 00000040h: BC 4E 9D 67 EC 37 46 D8 9C FA DD C2 28 E6 08 2A;</p><p> 00000050h: 8A 60 4F 08 7B 36 EE EE DF B1 6C 68 13 43 D4 33;</p>
75、<p> 00000060h: B1 33 2F FD 79 5B 89 29 7C 2A AF D0 7C 99 05 13;</p><p><b> db2.mdb:</b></p><p> 00000040h: BC 4E AC 67 DE 37 75 D8 A8 FA E8 C2 1E E6 3F 2A;</p><p
76、> 00000050h: B2 60 76 08 4B 36 DF EE ED B1 5F 68 13 43 D4 33;</p><p> 00000060h: B1 33 2F FD 79 5B 89 29 7C 2A AF D0 7C 99 05 13;</p><p> 為了方便看清楚,我將不同的地方加粗給表現了出來。由于了解了Access97的加密方式,便可以發(fā)現Ac
77、cess2000加密的方式不再像Access97一樣連續(xù)的存放在密碼字節(jié)里面,而是選擇了隔一個字節(jié)存放一個密碼。Access2000采用的加密方式對于Access97的加密方式來說,密碼的保護性又有了一些提高。因為密碼字節(jié)的不連續(xù)性,我們想要破解其密碼便會被其中的無效字節(jié)給誤導,從而無法得到想要的結果。并且由于密碼字節(jié)的不連續(xù)性,Access97的破解密碼的方式和工具便徹底的失去了效用。這種加密方式的改變,雖然只是改變了一小點,但卻也印
78、證了加密技術的不斷進步。如果不了解的話,基本上是無法通過非暴力破解的方式去找到密碼的。</p><p> 5.1.4 分析密碼字節(jié)得出密碼</p><p> 現在,我已經找到存放密碼的字節(jié)了,接下來便是研究怎么樣通過運算得到正確的密碼?;蛘哒f接下來我主要的研究便是了解Access2000采用的何種加密技術。那么選擇什么樣的運算方式開始檢驗呢?雖然Access2000數據庫和Access
79、97數據庫相比,加密字節(jié)有了不同,但或許它們采用的仍然是相同的運算方式。因此我決定先參考Access97的運算方法,運用“異或”來對加密字節(jié)進行計算。</p><p> 我將第一個不同的字節(jié)提取出來,即0xAC,然后讓其和未加密前的密碼字節(jié)的數字,即0xAC,進行異或運算。 0x9D^0xAC=0x31,結果是0x31,而0x31這正好對應的是Ascii碼中的“1”,我設置的密碼為1234567890123,這
80、結果與我設置的密碼的第一位是一樣的,這讓我心中十分的激動,看來在Access2000中雖然密碼的存放字節(jié)有了改變,但對于密碼的加密仍然采用的是Access97的異或運算方式。當然,這還需要我進行更多的嘗試才能確定。</p><p> 我懷著激動的心情繼續(xù)對下一個字節(jié)進行計算,0xEC^0xDE=0x32,而這正好就是Ascii碼中的“2”,這個結果又和我所設置的密碼是一樣的,看來加密的方式應該就是通過異或運算來
81、進行的了。當然雖然2個密碼已經出來了,但或許只是運氣好而已,只有當檢驗完所有的字節(jié)得出的密碼與我所設置的密碼一樣時,才能說是完全的成功。因此我把后面的都一一的進行了運算,一直到最后一個0x6C^0x5F=0x33,最后一個對應的是Ascii碼中的“3”。我將獲得的Ascii碼字符合成字符串,其密碼明為“1234567890123”。看來結果已經很清楚了,Access2000雖然將加密的字段有了一定的調整,但是在運算方式上卻并沒有改變。不
82、過上面的研究只是對于純數字的密碼來研究的,那么對于字母來說,Access2000數據庫存放密碼的字段是否有不同,加密方式是否不同還需要進一步的研究。</p><p> 5.1.5 深入分析Access2000的加密技術</p><p> 由于上面的密碼都是由數字組成,因此有一定的片面性。因為對于密碼的組成來說,基本上不可能都是由純數字組成的。因此我還必須檢驗數字加上字母,還有常見的一些
83、符號所設置的密碼,看看通過上面的研究所采用的解密方式是否同樣適用于字母和符號,看看得到的結果是否依然正確。當然我采用的是同樣的方式來進行研究。我將db1.mdb文件復制一份命名為db3.mdb文件。然后,用獨占的方式打開,并為其設置密碼,密碼為我的名字的拼音加上我的學號ycchao.02。接下來便是同樣的運用UltraEdit32中的程序將db3.mdb文件與db1.mdb文件進行比較。比較的結果如圖5.6所示:</p>
84、<p><b> 圖5.6 對比結果</b></p><p> 現在我再次將字節(jié)不同的地方提取出來:</p><p><b> db1.mdb:</b></p><p> 00000040h: BC 4E 9D 67 EC 37 46 D8 9C FA DD C2 28 E6 08 2A;</p&g
85、t;<p> 00000050h: 8A 60 4F 08 7B 36 EE EE DF B1 6C 68 13 43 D4 33;</p><p> 00000060h: B1 33 2F FD 79 5B 89 29 7C 2A AF D0 7C 99 05 13;</p><p><b> db2.mdb:</b></p>&l
86、t;p> 00000040h: BC 4E E4 67 99 37 25 D8 F4 FA BC C2 47 E6 26 2A;</p><p> 00000050h: BA 60 7D 08 7B 36 EE EE DF B1 6C 68 13 43 D4 33;</p><p> 00000060h: B1 33 2F FD 79 5B 89 29 7C 2A AF D0
87、7C 99 05 13;</p><p> 為了方便看清楚,我仍然將不同的地方加粗給表現了出來。</p><p> 現在開始計算結果,同樣的我將0x9D與0xE4進行異或運算,結果為0x79,而0x79正是Ascii碼中的“y”??磥砩厦鎸τ跀底炙捎玫募用苓\算方式同樣適用與字母。接下來我又計算了下一組數據,我將0xEC與0x99進行異或運算,得到的結果為0x75,而0x75正是Asc
88、ii碼中的“u”,看來應該是正確的了。當然我仍然一一的進行了計算,到了“.”這個符號了,這是十分關鍵的地方,因為數字和字母我都已經檢驗過了,結果是正確的,只要“.”符號也正確,那么Access2000的加密方式便出來了。0x08異或0x26,結果為0x2E,結果也是正確的。最后將所有的計算結果和起來為“yuchao.02”,而這運算出來的密碼明碼和我設置的密碼是一樣的??磥鞟ccess2000采用的就是異或運算對密碼加密的了。</
89、p><p> 5.2 Access解密工具的開發(fā)研究</p><p> 由于對Access2000數據庫加密技術已經知道了,接下來我想要開發(fā)一個破解軟件來做進一步的驗證。當然因為知道了Access2000數據庫加密的方式,開發(fā)一個小的破解軟件就變的就比較簡單了。當然,最主要的還是Access2000數據庫的加密方式并不復雜,只是十分簡單的異或運算,這種一次運算便能達到解密效果的運算使得對于
90、編程的難度也有了下降。</p><p> 5.2.1 解密工具的窗體布局</p><p> 首先,我在窗體中添加了2個Command命令按鈕,在Command1的Caption屬性中輸入“破解密碼”,在Command2的Caption屬性中輸入“選擇”。然后,我繼續(xù)在窗體中添加3個Text文本框按鈕,按順序Text1,Text2,Text3順序排列(文本中的1,2,3只是提示,實際上是
91、沒有的),最后,我們還需要3個Label標題欄,按照上圖分別輸入“路徑”,“版本”和“密碼”。這樣我所需要的窗體便已經飛快的完成了?,F在,就只需要加入源代碼了。</p><p> 下面是我窗體的布局,如圖5.7所示:</p><p><b> 圖5.7 窗體布局</b></p><p> 5.2.2 部分源代碼及其含義</p>
92、<p> 下面是Command2中的源代碼以及一些代碼的解釋:</p><p> 這是Command2中單擊事件的代碼:</p><p> Private Sub Command2_Click()</p><p> Text1.Text = GetFileName(True) ‘得到文件的路徑</p><p><
93、b> End Sub</b></p><p> 當然Command2中的語句是很簡單的,這些代碼主要只是提出Command2按鈕的作用,但要真正完成文件的選擇與打開,還需要添加模塊內容,其代碼如下:</p><p> Public Function GetFileName(ByVal fbOpen As Boolean, _</p><p>
94、 Optional fsFilter As String = "Acess文件 (*.mdb)| *.mdb|所有文件 (*.*)| *.*", _</p><p> Optional ByVal fsDefaultExt As String, _</p><p> Optional ByVal fsDefFile As String, _</p>
95、<p> Optional ByVal fsDialogTitle As String, _</p><p> Optional ByVal flHwnd As Long = -1) As String</p><p> Dim CommonDialog1 As New clsCommonDialog</p><p> If fbOpen Then
96、</p><p> If (CommonDialog1.VBGetOpenFileName(FileName:=fsDefFile, _</p><p> Filter:=fsFilter, _</p><p> FileTitle:=fsDialogTitle, _</p><p> DefaultExt:=fsDefaultExt
97、, _</p><p> Owner:=flHwnd)) Then</p><p> 上面的代碼我并沒有按照完全編寫的順序來展示,而是通過F8按鈕,使用步執(zhí)行來展示運行的狀態(tài),這樣也是為了更方便的去分析和了解程序。</p><p> 對于取得文件了名字,我采用的是一個循環(huán)語句。采用循環(huán),對文件所在的路徑的字母采用逐個的讀取并保存,直到取的文件所在路徑的最后一個
98、字母,循環(huán)結束。其代碼如下:</p><p> Function VBGetOpenFileName(FileName As String, _</p><p> Optional FileTitle As String, _</p><p> Optional FileMustExist As Boolean = True, _</p><
99、;p> Optional MultiSelect As Boolean = False, _</p><p> Optional ReadOnly As Boolean = False, _</p><p> Optional HideReadOnly As Boolean = False, _</p><p> Optional Filter As
100、String = "All (*.*)| *.*", _</p><p> Optional FilterIndex As Long = 1, _</p><p> Optional InitDir As String, _</p><p> Optional DlgTitle As String, _</p><p&g
101、t; Optional DefaultExt As String, _</p><p> Optional Owner As Long = -1, _</p><p> Optional flags As Long = 0) As Boolean</p><p> Dim opfile As OPENFILENAME, s As String, afFlag
102、s As Long</p><p> m_lApiReturn = 0</p><p> m_lExtendedError = 0</p><p> With opfile</p><p> .lStructSize = Len(opfile) ' Add in specific flags and strip out no
103、n-VB flags</p><p> .flags = (-FileMustExist * OFN_FILEMUSTEXIST) Or _</p><p> (-MultiSelect * OFN_ALLOWMULTISELECT) Or _</p><p> (-ReadOnly * OFN_READONLY) Or _</p><p&
104、gt; (-HideReadOnly * OFN_HIDEREADONLY) Or _</p><p> (flags And CLng(Not (OFN_ENABLEHOOK Or _</p><p> OFN_ENABLETEMPLATE)))</p><p> If Owner <> -1 Then </p><p>
105、; .hWndOwner = Owner</p><p> .lpstrInitialDir = InitDir</p><p> .lpstrDefExt = DefaultExt</p><p> .lpstrTitle = DlgTitle</p><p> Dim ch As String, i As Integer
106、39;該段代碼為循環(huán)主體</p><p> For i = 1 To Len(Filter)</p><p> ch = Mid$(Filter, i, 1)</p><p> If ch = "|" Or ch = ":"Then</p><p> s = s & vbNullChar
107、</p><p><b> Else</b></p><p> s = s & ch</p><p><b> End If</b></p><p><b> Next</b></p><p> s = s & vbNullCh
108、ar & vbNullChar</p><p> .lpstrFilter = s</p><p> .nFilterIndex = FilterIndex</p><p> s = FileName & String$(MAX_PATH - Len(FileName), 0)</p><p> .lpstrFile
109、= s</p><p> .nMaxFile = MAX_PATH</p><p> s = FileTitle & String$(MAX_FILE - Len(FileTitle), 0)</p><p> .lpstrFileTitle = s</p><p> .nMaxFileTitle = MAX_FILE<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計-----文件加密與解密算法研究設計
- 畢業(yè)設計-----文件加密與解密算法研究設計
- 加密解密論文畢業(yè)設計
- vc實現文件簡單的加密和解密畢業(yè)設計論文.doc
- 文件加密解密算法研究與實現——基于usbkey的文件加密解密方案
- 加密解密文件
- 文件加密解密算法研究與實現——基于USBKEY的文件加密解密方案.pdf
- 實現文件簡單的加密和解密畢業(yè)設計任務書.doc
- 基于java的文件加密解密
- java文件加密解密課程設計
- java課程設計 -- 文件加密與解密
- c語言課程設計-文件加密解密
- c語言課程設計-文件加密解密
- 文件的加密解密技術研究.pdf
- vc實現文件簡單的加密和解密
- 文件加密與解密—java課程設計報告
- 畢業(yè)設計--外發(fā)加密文件管理平臺
- [優(yōu)秀畢業(yè)設計精品] 基于direct3d的windows游戲開發(fā)
- c語言課程設計-文件加密解密(含源代碼)
- 加密解密
評論
0/150
提交評論