[優(yōu)秀畢業(yè)設計精品] access加密文件的解密工具的開發(fā)研究_第1頁
已閱讀1頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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網(wǎng)上信息傳輸?shù)陌踩?,需要保證信息安全。其中,信息安全的核心是密碼技術。信息保密的理論基礎是密碼學,根據(jù)現(xiàn)代密碼學理論,個好的加密算法的安全性只依賴于密鑰,加密算法的公開與否不影響其安全性,現(xiàn)代密碼學經(jīng)過幾十年研究和發(fā)展,已經(jīng)發(fā)明了許多安全性很高的加密算法,并且被廣泛地應用在各種信息安全產(chǎn)品中,其中數(shù)據(jù)加密技術是密碼學的個重要應用領域,數(shù)據(jù)加密產(chǎn)品由于實現(xiàn)的思路方法和層次區(qū)別,決定了其應用領域和范圍。</p&g

4、t;<p>  信息安全問題涉及到國家安全、社會公共安全,世界各國已經(jīng)認識到信息安全涉及重大國家利益,是互聯(lián)網(wǎng)經(jīng)濟的制高點,也是推動互聯(lián)網(wǎng)發(fā)展、電子政務和電子商務的關鍵,發(fā)展信息安全技術是目前面臨的迫切要求,除了上述內(nèi)容以外,網(wǎng)絡與信息安全還涉及到其他很多方面的技術與知識,例如:黒客技術、防火墻技術、入侵檢測技術、病毒防護技術、信息隱藏技術等。一個完善的信息安全保障系統(tǒng),應該根據(jù)具體需求對上述安全技術進行取舍。 <

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 數(shù)據(jù)加密的標準5</p><p>  2.3 加密技術在VPN上的應用5</p><p>  第3章 數(shù)據(jù)庫加密技術7</p><p>  3.1 數(shù)據(jù)庫加密的必要性7</p><p>  3.2 數(shù)據(jù)庫加密的基本要求7</p><p>

14、;  3.2.1 字段加密7</p><p>  3.2.2 密鑰動態(tài)管理7</p><p>  3.2.3 合理處理數(shù)據(jù)7</p><p>  3.2.4 不影響合法用戶的操作8</p><p>  3.3 不同層次實現(xiàn)數(shù)據(jù)庫加密8</p><p>  3.4 數(shù)據(jù)庫加密的安全措施8</p>

15、<p>  3.4.1 在用戶進入系統(tǒng)時進行兩級安全控制8</p><p>  3.4.2 防止非法拷貝9</p><p>  3.4.3 安全的數(shù)據(jù)抽取方式9</p><p>  3.5 數(shù)據(jù)庫加密系統(tǒng)的結(jié)構(gòu)9</p><p>  第4章 Access數(shù)據(jù)庫加密技術10</p><p>  4.

16、1 Access數(shù)據(jù)庫的安全性問題10</p><p>  4.2 Access數(shù)據(jù)庫的加密技術10</p><p>  4.3 對于Access97文件的研究11</p><p>  第5章Access2000數(shù)據(jù)庫的研究12</p><p>  5.1 Access2000數(shù)據(jù)庫的研究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數(shù)據(jù)庫加密技術的改進26</p><p>  6.1 Access數(shù)據(jù)庫現(xiàn)有的改進方法26</p>

19、;<p>  6.2 Access數(shù)據(jù)庫改進設想26</p><p><b>  結(jié) 論28</b></p><p><b>  參考文獻29</b></p><p><b>  致 謝30</b></p><p>  第1章 加密技術的應用</

20、p><p>  1.1 加密技術的由來</p><p>  加密作為保障數(shù)據(jù)安全的一種方式,它不是現(xiàn)在才有的,它產(chǎn)生的歷史相當久遠,它是起源于要追溯于公元前2000年(幾個世紀了),雖然它不是現(xiàn)在我們所講的加密技術(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來

21、保護他們的書面信息。</p><p>  1.1.1 加密技術的近期應用</p><p>  近期加密技術主要應用于軍事領域,如美國獨立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機器是German Enigma機,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于Alan Turing和Ultra計劃以及其他人的努力,終于對德國人的密碼進行了破解。當初,計算機的研究就是為了破解德

22、國人的密碼,人們并沒有想到計算機給今天帶來的信息革命。隨著計算機的發(fā)展,運算能力的增強,過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數(shù)據(jù)加密方式,如利用ROSA算法產(chǎn)生的私鑰和公鑰就是在這個基礎上產(chǎn)生的。</p><p>  1.1.2 加密技術在計算機上的應用</p><p>  隨著網(wǎng)絡技術的發(fā)展,網(wǎng)絡安全也就成為當今網(wǎng)絡社會的焦點中的焦點,幾乎沒有人不在談論網(wǎng)絡上的安全問

23、題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰(zhàn)心驚。病毒、黑客的猖獗使身處今日網(wǎng)絡社會的人們感覺到談網(wǎng)色變,無所適從。 </p><p>  但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發(fā)現(xiàn)之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所

24、以我們不能有等網(wǎng)絡安全了再上網(wǎng)的念頭,因為或許網(wǎng)絡不能有這么一日,就像“矛”與“盾”,網(wǎng)絡與病毒、黑客永遠是一對共存體。</p><p>  現(xiàn)代的電腦加密技術就是適應了網(wǎng)絡安全的需要而應運產(chǎn)生的,它為我們進行一般的電子商務活動提供了安全保障,如在網(wǎng)絡中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術也不是什么新生事物,只不過應用在當今電子商務、電腦網(wǎng)絡中還是近幾年的歷史。但是加密技術在網(wǎng)絡上的應用

25、上卻扮演著十分重要的角色。從而達到安全使用網(wǎng)絡的目的,是一門在網(wǎng)絡上不可缺少的技術。</p><p><b>  1.2 加密的概念</b></p><p>  數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法人竊取、閱讀的

26、目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。</p><p>  加密在網(wǎng)絡上的作用就是防止有用或私有化信息在網(wǎng)絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某種意義上來講意味著其安全體系的全面崩潰。</p><p>  數(shù)字簽名就是基于加密技術的,它的作用就是用來確定用戶是否是真實的。應用最多的還是電子

27、郵件,如當用戶收到一封電子郵件時,郵件上面標有發(fā)信人的姓名和信箱地址,很多人可能會簡單地認為發(fā)信人就是信上說明的那個人,但實際上偽造一封電子郵件對于一個通常人來說是極為容易的事。在這種情況下,就要用到加密技術基礎上的數(shù)字簽名,用它來確認發(fā)信人身份的真實性。</p><p>  類似數(shù)字簽名技術的還有一種身份認證技術,有些站點提供入站FTP和WWW服務,當然用戶通常接觸的這類服務是匿名服務,用戶的權力要受到限制,但

28、也有的這類服務不是匿名的,如某公司為了信息交流提供用戶的合作伙伴非匿名的FTP服務,或開發(fā)小組把他們的Web網(wǎng)頁上載到用戶的WWW服務器上,現(xiàn)在的問題就是,用戶如何確定正在訪問用戶的服務器的人就是用戶認為的那個人,身份認證技術就是一個好的解決方案。</p><p>  在這里需要強調(diào)一點的就是,文件加密其實不只用于電子郵件或網(wǎng)絡上的文件傳輸,其實也可應用靜態(tài)的文件保護,如PIP軟件就可以對磁盤、硬盤中的文件或文件

29、夾進行加密,以防他人竊取其中的信息[1]。</p><p>  1.2.1 加密的理由</p><p>  當今網(wǎng)絡社會選擇加密已是我們別無選擇,其一是我們知道在互聯(lián)網(wǎng)上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對于一些大公司和一些機密文件在網(wǎng)絡上傳輸。而且這種不安全性是互聯(lián)網(wǎng)存在基礎——TCP/IP協(xié)議所固有的,包括一些基于TCP/IP的服務;另一方面,互聯(lián)網(wǎng)給眾多的商家?guī)?/p>

30、來了無限的商機,互聯(lián)網(wǎng)把全世界連在了一起,走向互聯(lián)網(wǎng)就意味著走向了世界,這對于無數(shù)商家無疑是夢寐以求的好事,特別是對于中小企業(yè)。為了解決這一對矛盾、為了能在安全的基礎上大開這通向世界之門,我們只好選擇了數(shù)據(jù)加密和基于加密技術的數(shù)字簽名。</p><p>  加密在網(wǎng)絡上的作用就是防止有用或私有化信息在網(wǎng)絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某

31、種意義上來講意味著其安全體系的全面崩潰。</p><p>  通過網(wǎng)絡進行登錄時,所鍵入的密碼以明文的形式被傳輸?shù)椒掌鳎W(wǎng)絡上的竊聽是一件極為容易的事情,所以很有可能黑客會竊取得用戶的密碼,如果用戶是Root用戶或Administrator用戶,那后果將是極為嚴重的。</p><p>  這樣的例子實在是太多了,解決上述難題的方案就是加密,加密后的口令即使被黑客獲得也是不可讀的,加密后

32、的文件或者數(shù)據(jù)沒有收件人的私鑰也無法解開,文件和數(shù)據(jù)將成為一大堆無任何實際意義的亂碼。總之無論是單位還是個人在某種意義上來說加密也成為當今網(wǎng)絡社會進行文件或郵件安全傳輸?shù)臅r代象征。</p><p>  1.2.2 加密的方法</p><p>  加密技術是電子商務采取的主要安全保密措施,是最常用的安全保密手段,利用加密技術手段把重要的數(shù)據(jù)變?yōu)閬y碼(加密)傳送,到達目的地后再用相同或不同的手

33、段還原(解密)。加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與一竄數(shù)字(密鑰)的結(jié)合,產(chǎn)生不可理解的密文的步驟,密鑰是用來對數(shù)據(jù)進行編碼和解碼的一種算法。在安全保密中,可通過適當?shù)拿荑€加密技術和管理機制來保證網(wǎng)絡的信息通訊安全。密鑰加密技術的密碼體制分為對稱密鑰體制和非對稱密鑰體制兩種。相應地,對數(shù)據(jù)加密的技術分為兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數(shù)據(jù)加密標準(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>  對稱加密采用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學中叫做對稱加密算法,對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數(shù)據(jù)加密標準(DNS),另一個對稱密鑰加密系統(tǒng)是國際數(shù)據(jù)加密算法(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)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對

38、數(shù)據(jù)進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。</p><p>  通俗的說非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網(wǎng)絡上傳輸加

39、密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題[3]。</p><p>  2.2 數(shù)據(jù)加密的標準</p><p>  最早、最著名的保密密鑰或?qū)ΨQ密鑰加密算法DES(Data Encryption Standard)是由

40、IBM公司在70年代發(fā)展起來的,并經(jīng)政府的加密標準篩選后,于1976年11月被美國政府采用,DES隨后被美國國家標準局和美國國家標準協(xié)會(American National Standard Institute,ANSI)承認。DES使用56位密鑰對64位的數(shù)據(jù)塊進行加密,并對64位的數(shù)據(jù)塊進行16輪編碼。與每輪編碼時,一個48位的"每輪"密鑰值由56位的完整密鑰得出來。DES用軟件進行解碼需用很長時間,而用硬件解碼

41、速度非???。幸運的是,當時大多數(shù)黑客并沒有足夠的設備制造出這種硬件設備。在1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用于DES的解密,而且需要12個小時的破解才能得到結(jié)果。當時DES被認為是一種十分強大的加密方法。</p><p>  隨著計算機硬件的速度越來越快,制造一臺這樣特殊的機器的花費已經(jīng)降到了十萬美元左右,而用它來保護十億美元的銀行,那顯然是不夠保險了。另一方面,如果只用它來保護一臺普通

42、服務器,那么DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個服務器而花那么多的錢破解DES密文。</p><p>  另一種非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大數(shù)不可能被質(zhì)因數(shù)分解假設的公鑰體系。簡單地說就是找兩個很大的質(zhì)數(shù)。一個對外公開的為“公鑰”(Publickey),另一個不告訴任何人,稱為"私鑰”(Privatekey)。這兩個密

43、鑰是互補的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。</p><p>  假設用戶甲要寄信給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到后就可以用自己的私鑰解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道乙的公鑰,他們都可以給乙發(fā)信,那么乙怎么確信是不是甲的來信呢?那就要用到基于加密技術的數(shù)字簽名了。

44、</p><p>  甲用自己的私鑰將簽名內(nèi)容加密,附加在郵件后,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文被乙收到以后,乙用自己的私鑰將郵件解密,得到甲的原文和數(shù)字簽名,然后用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了[4]。</p><p>  2.3 加密技術在VPN上的應用</p

45、><p>  現(xiàn)在,越多越多的公司走向國際化,一個公司可能在多個國家都有辦事機構(gòu)或銷售中心,每一個機構(gòu)都有自己的局域網(wǎng)LAN(Local Area Network),但在當今的網(wǎng)絡社會人們的要求不僅如此,用戶希望將這些LAN連結(jié)在一起組成一個公司的廣域網(wǎng),這個在現(xiàn)在已不是什么難事了。</p><p>  事實上,很多公司都已經(jīng)這樣做了,但他們一般使用租用專用線路來連結(jié)這些局域網(wǎng),他們考慮的就是

46、網(wǎng)絡的安全問題。現(xiàn)在具有加密/解密功能的路由器已到處都是,這就使人們通過互聯(lián)網(wǎng)連接這些局域網(wǎng)成為可能,這就是我們通常所說的虛擬專用網(wǎng)(Virtual Private Network ,VPN)。當數(shù)據(jù)離開發(fā)送者所在的局域網(wǎng)時,該數(shù)據(jù)首先被用戶端連接到互聯(lián)網(wǎng)上的路由器進行硬件加密,數(shù)據(jù)在互聯(lián)網(wǎng)上是以加密的形式傳送的,當達到目的LAN的路由器時,該路由器就會對數(shù)據(jù)進行解密,這樣目的LAN中的用戶就可以看到真正的信息了。</p>

47、<p>  第3章 數(shù)據(jù)庫加密技術</p><p>  3.1 數(shù)據(jù)庫加密的必要性</p><p>  目前,計算機大批量數(shù)據(jù)存儲的安全問題、敏感數(shù)據(jù)的防竊取和防篡改問題越來越引起人們的重視。數(shù)據(jù)庫系統(tǒng)作為計算機信息系統(tǒng)的核心部件,數(shù)據(jù)庫文件作為信息的聚集體,其安全性將是信息產(chǎn)業(yè)的重中之重。</p><p>  3.2 數(shù)據(jù)庫加密的基本要求</p&

48、gt;<p>  一個良好的數(shù)據(jù)庫加密系統(tǒng)應該滿足的基本要求。字段加密,密匙動態(tài)管理,合理處理數(shù)據(jù),不影響合法擁護的操作。</p><p>  3.2.1 字段加密 </p><p>  在目前條件下,加/脫密的粒度是每個記錄的字段數(shù)據(jù)。如果以文件或列為單位進行加密,必然會形成密鑰的反復使用,從而降低加密系統(tǒng)的可靠性或者因加脫密時間過長而無法使用。只有以記錄的字段數(shù)據(jù)為單位進

49、行加/脫密,才能適應數(shù)據(jù)庫操作,同時進行有效的密鑰管理并完成“一次一密”的密碼操作。 </p><p>  3.2.2 密鑰動態(tài)管理 </p><p>  數(shù)據(jù)庫客體之間隱含著復雜的邏輯關系,一個邏輯結(jié)構(gòu)可能對應著多個數(shù)據(jù)庫物理客體,所以數(shù)據(jù)庫加密不僅密鑰量大,而且組織和存儲工作比較復雜,需要對密鑰實現(xiàn)動態(tài)管理。 </p><p>  3.2.3 合理處理數(shù)據(jù) &l

50、t;/p><p>  這包括幾方面的內(nèi)容。首先要恰當?shù)靥幚頂?shù)據(jù)類型,否則 DBMS將會因加密后的數(shù)據(jù)不符合定義的數(shù)據(jù)類型而拒絕加載;其次,需要處理數(shù)據(jù)的存儲問題,實現(xiàn)數(shù)據(jù)庫加密后,應基本上不增加空間開銷。在目前條件下,數(shù)據(jù)庫關系運算中的匹配字段,如表間連接碼、索引字段等數(shù)據(jù)不宜加密。文獻字段雖然是檢索字段,但也應該允許加密,因為文獻字段的檢索處理采用了有別于關系數(shù)據(jù)庫索引的正文索引技術。 </p>&l

51、t;p>  3.2.4 不影響合法用戶的操作 </p><p>  加密系統(tǒng)影響數(shù)據(jù)操作響應時間應盡量短,在現(xiàn)階段,平均延遲時間不應超過1/10秒。此外,對數(shù)據(jù)庫的合法用戶來說,數(shù)據(jù)的錄入、修改和檢索操作應該是透明的,不需要考慮數(shù)據(jù)的加/脫密問題。</p><p>  3.3 不同層次實現(xiàn)數(shù)據(jù)庫加密 </p><p>  我們可以考慮在三個不同層次實現(xiàn)對數(shù)據(jù)庫

52、數(shù)據(jù)的加密,這三個層次分別是OS、DBMS內(nèi)核層和DBMS外層。 </p><p>  在OS層,無法辨認數(shù)據(jù)庫文件中的數(shù)據(jù)關系,從而無法產(chǎn)生合理的密鑰,也無法進行合理的密鑰管理和使用。所以,在OS層對數(shù)據(jù)庫文件進行加密,對于大型數(shù)據(jù)庫來說,目前還難以實現(xiàn)。 </p><p>  在DBMS內(nèi)核層實現(xiàn)加密,是指數(shù)據(jù)在物理存取之前完成加/脫密工作。這種方式勢必造成DBMS和加密器(硬件或軟件

53、)之間的接口需要DBMS 開發(fā)商的支持。這種加密方式的優(yōu)點是加密功能強,并且加密功能幾乎不會影響DBMS 的功能。其缺點是在服務器端進行加/脫密運算,加重了數(shù)據(jù)庫服務器的負載。 </p><p>  比較實際的做法是將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具。采用這種加密方式時,加/脫密運算可以放在客戶端進行,其優(yōu)點是不會加重數(shù)據(jù)庫服務器的負載并可實現(xiàn)網(wǎng)上傳輸加密,缺點是加密功能會受一些限制。圖中,“定義加密要求

54、工具”模塊的主要功能是定義如何對每個數(shù)據(jù)庫表數(shù)據(jù)進行加密。在創(chuàng)建了一個數(shù)據(jù)庫表后,通過這一工具對該表進行定義;“數(shù)據(jù)庫應用系統(tǒng)”的功能是完成數(shù)據(jù)庫定義和操作。數(shù)據(jù)庫加密系統(tǒng)將根據(jù)加密要求自動完成對數(shù)據(jù)庫數(shù)據(jù)的加/ 脫密[5]。</p><p>  3.4 數(shù)據(jù)庫加密的安全措施</p><p>  數(shù)據(jù)庫加密系統(tǒng)首先要解決系統(tǒng)本身的安全性和可靠性問題,在這方面,可以采用以下幾項安全措施:在用

55、戶進入系統(tǒng)時進行兩級安全控制,防止非法拷貝,安全的數(shù)據(jù)抽取方式。</p><p>  3.4.1 在用戶進入系統(tǒng)時進行兩級安全控制</p><p>  這種控制可以采用多種方式,包括設置數(shù)據(jù)庫用戶名和口令,或者利用IC卡讀寫器/指紋識別器進行用戶身份認證。 </p><p>  3.4.2 防止非法拷貝 </p><p>  對于純軟件系統(tǒng),

56、可以采用軟指紋技術防止非法拷貝,當然,如果每臺客戶機上都安裝加密卡等硬部件,安全性會更好。此外,還應該保留數(shù)據(jù)庫原有的安全措施,如權限控制、備份/恢復和審計控制等。 </p><p>  3.4.3 安全的數(shù)據(jù)抽取方式 </p><p>  提供兩種卸出和裝入數(shù)據(jù)庫中加密數(shù)據(jù)的方式:其一是密文方式卸出,這種卸出方式不脫密,卸出的數(shù)據(jù)還是密文,在這種模式下,可直接使用 DBMS提供的卸出/裝

57、入工具;其二是明文方式卸出,這種卸出方式需要脫密,卸出的數(shù)據(jù)是明文,在這種模式下,可利用系統(tǒng)專用工具先進行數(shù)據(jù)轉(zhuǎn)換,再使用DBMS提供的卸出/裝入工具完成。</p><p>  3.5 數(shù)據(jù)庫加密系統(tǒng)的結(jié)構(gòu)</p><p>  數(shù)據(jù)庫加密系統(tǒng)分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數(shù)據(jù)庫加/脫密引擎。 </p><p>  數(shù)據(jù)庫加密系統(tǒng)將用戶對

58、數(shù)據(jù)庫信息具體的加密要求記載在加密字典中,加密字典是數(shù)據(jù)庫加密系統(tǒng)的基礎信息。 </p><p>  加密字典管理程序,是管理加密字典的實用程序,是數(shù)據(jù)庫管理員變更加密要求的工具。 </p><p>  加密字典管理程序通過數(shù)據(jù)庫加/脫密引擎實現(xiàn)對數(shù)據(jù)庫表的加密、脫密及數(shù)據(jù)轉(zhuǎn)換等功能,此時,它作為一個特殊客戶來使用數(shù)據(jù)庫加/脫密引擎。 </p><p>  數(shù)據(jù)庫加

59、/脫密引擎是數(shù)據(jù)庫加密系統(tǒng)的核心部件,負責在后臺完成數(shù)據(jù)庫信息的加/脫密處理,對應用開發(fā)人員和操作人員是透明的。 </p><p>  按以上方式實現(xiàn)的數(shù)據(jù)庫加密系統(tǒng)具有很多優(yōu)點。首先,系統(tǒng)對數(shù)據(jù)庫的最終用戶完全透明,數(shù)據(jù)管理員可以指定需要加密的數(shù)據(jù)并根據(jù)需要進行明文/密文的轉(zhuǎn)換工作;其次,系統(tǒng)完全獨立于數(shù)據(jù)庫應用系統(tǒng),不需要改動數(shù)據(jù)庫應用系統(tǒng)就能實現(xiàn)加密功能,同時系統(tǒng)采用了分組加密法和二級密鑰管理,實現(xiàn)了“一次

60、一密”;其三,系統(tǒng)在客戶端進行數(shù)據(jù)加/脫密運算,不會影響數(shù)據(jù)庫服務器的系統(tǒng)效率,數(shù)據(jù)加/脫密運算基本無延遲感覺。 </p><p>  數(shù)據(jù)庫加密系統(tǒng)能夠有效地保證數(shù)據(jù)的安全,即使黑客竊取了關鍵數(shù)據(jù),他仍然難以得到所需的信息,因為所有的數(shù)據(jù)都經(jīng)過了加密。另外,數(shù)據(jù)庫加密以后,可以設定不需要了解數(shù)據(jù)內(nèi)容的系統(tǒng)管理員不能見到明文,大大提高了關鍵數(shù)據(jù)的安全性[6]。</p><p>  第4章

61、Access數(shù)據(jù)庫加密技術</p><p>  4.1 Access數(shù)據(jù)庫的安全性問題</p><p>  Access數(shù)據(jù)庫作為微軟推出的以標準JET為引擎的桌面型數(shù)據(jù)庫系統(tǒng),由于具有操作簡單、界面友好等特點,成為許多中小型網(wǎng)上應用系統(tǒng)的首選數(shù)據(jù)庫。Access數(shù)據(jù)庫在為我們帶來便捷的同時,也帶來了不容忽視的安全問題。</p><p>  Access數(shù)據(jù)庫的設置

62、密碼算法比較簡單,很容易被破解。Access數(shù)據(jù)庫的文件頭中42H-4EH為密碼區(qū)。設置密碼時,根據(jù)所設密碼的ASCII碼與密碼區(qū)的內(nèi)容進行異或運算,最后將運算的結(jié)果存入密碼區(qū)。 </p><p>  在Access數(shù)據(jù)庫打開之后,數(shù)據(jù)庫中的所有對象對用戶都將是可用的。對于一些存儲敏感數(shù)據(jù)的Access數(shù)據(jù)庫,除了設置數(shù)據(jù)庫密碼外,應該對數(shù)據(jù)庫中的數(shù)據(jù)進行加密。 </p><p>  由此

63、可以看出,Access的安全性有待于進一步提高。</p><p>  4.2 Access數(shù)據(jù)庫的加密技術</p><p>  Access 提供了設置數(shù)據(jù)庫安全的幾種傳統(tǒng)方法:為打開的數(shù)據(jù)庫設置密碼,或設置用戶級安全,以限制允許用戶訪問或更改數(shù)據(jù)庫的哪一部分,以及加密數(shù)據(jù)庫使用戶無法通過工具程序或字處理程序查看和修改數(shù)據(jù)庫中的敏感數(shù)據(jù)。除這些方法之外,還可將數(shù)據(jù)庫保存為 MDE 文件以刪

64、除數(shù)據(jù)庫中可編輯的 Visual Basic 代碼以防止對窗體、報表和模塊的設計進行修改。 </p><p>  (1)設置密碼。最簡單的方法是為打開的數(shù)據(jù)庫設置密碼。設置密碼后,打開數(shù)據(jù)庫時將顯示要求輸入密碼的對話框。只有鍵入正確密碼的用戶才可以打開數(shù)據(jù)庫。在數(shù)據(jù)庫打開之后,數(shù)據(jù)庫中的所有對象對用戶都將是可用的。 </p><p>  (2)用戶級安全。設置數(shù)據(jù)庫安全的最靈活和最廣泛的方

65、法是設置用戶級安全。這種安全類似于很多網(wǎng)絡中使用的方法,它要求用戶在啟動Access 時確認自己的身份并鍵入密碼。 </p><p>  (3)加密數(shù)據(jù)庫。對數(shù)據(jù)庫進行加密將壓縮數(shù)據(jù)庫文件,并使用戶無法通過工具程序或字處理程序查看和修改數(shù)據(jù)庫中的敏感數(shù)據(jù)[7]。</p><p>  4.3 對于Access97文件的研究</p><p>  Access97是一款比

66、較老了的數(shù)據(jù)庫軟件了。對于Access97的密碼破解,在很多的網(wǎng)站和雜志上都有過一些介紹。因此,對于才了解加密技術的我,決定先去了解Access97數(shù)據(jù)庫的加密技術與解密方法。然后在對Access2000數(shù)據(jù)庫進行研究。</p><p>  通過查找資料,終于了解了Access97數(shù)據(jù)庫的加密方式,現(xiàn)在我在這里簡單的重復一下。</p><p>  Access97的密匙是固定的13個字節(jié),

67、而且經(jīng)過了解知道了Access97文件的密匙是存放在.mdb文件的第0x42字節(jié)處的13個相連的位置中,其13個字節(jié)分別為0x86,0xfb,0xec,0x37,0x5d,0x44,0x9c,0xfa,0xc6,0x5e,0x28,0xe6,0x13。將這些位置的代碼與上面的字節(jié)異或后即可得到數(shù)據(jù)庫的密碼。通過了解Access97數(shù)據(jù)庫的加密技術和掌握的解密方法,我用這種方法對Access2000數(shù)據(jù)庫也進行了同樣的解密操作,想試著解開

68、Access2000數(shù)據(jù)庫的密碼??墒前l(fā)現(xiàn)上面的方法已經(jīng)無法解開Access2000數(shù)據(jù)庫的密碼,由此可以知道,Access2000數(shù)據(jù)庫的加密技術使用的是與Access97不同的加密方式。對于Access2000數(shù)據(jù)庫到底有什么地方進行了改變,其加密技術是否有什么新的改進,我決定對Access2000進行一些研究。</p><p>  第5章Access2000數(shù)據(jù)庫的研究</p><p&g

69、t;  5.1 Access2000數(shù)據(jù)庫的研究</p><p>  對與Access2000數(shù)據(jù)庫我使用的分析工具是UltraEdit32 v10.00,編程工具我使用的是VB6.0。選擇使用VB進行編程是因為VB使用起來十分的簡單,而且容易上手。</p><p>  5.1.1 創(chuàng)建一個空的Access2000文件</p><p>  首先我創(chuàng)建了一個空密碼的A

70、ccess2000數(shù)據(jù)庫文件db1.mdb,包含一個表,并且不在文件中添加任何的數(shù)據(jù),因此該文件中的每一個字段都是沒有任何數(shù)據(jù)的。然后保存退出。創(chuàng)建這樣的一個空文件,主要的目的就是為了用來作為一個對比的模板。而不在文件中添加內(nèi)容,主要是為了避免在比較時出現(xiàn)太多不相同的地方,從而影響密碼字段的判斷。創(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。這樣做的目的主要是為了保證其中的數(shù)據(jù)與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>  現(xiàn)在準備工作就已經(jīng)完成了,接下來主要是使用UltraEdit32 v10.00程序打開db1.mdb和db2.mdb這2

73、個文件,并且對db1.mdb和db2.mdb這2個文件的各個字節(jié)進行對比,查出哪一些字節(jié)處發(fā)生了變化。我使用的是UltraEdit32中附帶的比較程序,能夠快速的將字節(jié)不同的地方顯示出來。經(jīng)過一翻對比,終于發(fā)現(xiàn)了2個文件中不同的地方,如圖5.5所示:</p><p><b>  圖5.5 對比結(jié)果</b></p><p>  現(xiàn)在我將字節(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>  為了方便看清楚,我將不同的地方加粗給表現(xiàn)了出來。由于了解了Access97的加密方式,便可以發(fā)現(xiàn)Ac

77、cess2000加密的方式不再像Access97一樣連續(xù)的存放在密碼字節(jié)里面,而是選擇了隔一個字節(jié)存放一個密碼。Access2000采用的加密方式對于Access97的加密方式來說,密碼的保護性又有了一些提高。因為密碼字節(jié)的不連續(xù)性,我們想要破解其密碼便會被其中的無效字節(jié)給誤導,從而無法得到想要的結(jié)果。并且由于密碼字節(jié)的不連續(xù)性,Access97的破解密碼的方式和工具便徹底的失去了效用。這種加密方式的改變,雖然只是改變了一小點,但卻也印

78、證了加密技術的不斷進步。如果不了解的話,基本上是無法通過非暴力破解的方式去找到密碼的。</p><p>  5.1.4 分析密碼字節(jié)得出密碼</p><p>  現(xiàn)在,我已經(jīng)找到存放密碼的字節(jié)了,接下來便是研究怎么樣通過運算得到正確的密碼?;蛘哒f接下來我主要的研究便是了解Access2000采用的何種加密技術。那么選擇什么樣的運算方式開始檢驗呢?雖然Access2000數(shù)據(jù)庫和Access

79、97數(shù)據(jù)庫相比,加密字節(jié)有了不同,但或許它們采用的仍然是相同的運算方式。因此我決定先參考Access97的運算方法,運用“異或”來對加密字節(jié)進行計算。</p><p>  我將第一個不同的字節(jié)提取出來,即0xAC,然后讓其和未加密前的密碼字節(jié)的數(shù)字,即0xAC,進行異或運算。 0x9D^0xAC=0x31,結(jié)果是0x31,而0x31這正好對應的是Ascii碼中的“1”,我設置的密碼為1234567890123,這

80、結(jié)果與我設置的密碼的第一位是一樣的,這讓我心中十分的激動,看來在Access2000中雖然密碼的存放字節(jié)有了改變,但對于密碼的加密仍然采用的是Access97的異或運算方式。當然,這還需要我進行更多的嘗試才能確定。</p><p>  我懷著激動的心情繼續(xù)對下一個字節(jié)進行計算,0xEC^0xDE=0x32,而這正好就是Ascii碼中的“2”,這個結(jié)果又和我所設置的密碼是一樣的,看來加密的方式應該就是通過異或運算來

81、進行的了。當然雖然2個密碼已經(jīng)出來了,但或許只是運氣好而已,只有當檢驗完所有的字節(jié)得出的密碼與我所設置的密碼一樣時,才能說是完全的成功。因此我把后面的都一一的進行了運算,一直到最后一個0x6C^0x5F=0x33,最后一個對應的是Ascii碼中的“3”。我將獲得的Ascii碼字符合成字符串,其密碼明為“1234567890123”??磥斫Y(jié)果已經(jīng)很清楚了,Access2000雖然將加密的字段有了一定的調(diào)整,但是在運算方式上卻并沒有改變。不

82、過上面的研究只是對于純數(shù)字的密碼來研究的,那么對于字母來說,Access2000數(shù)據(jù)庫存放密碼的字段是否有不同,加密方式是否不同還需要進一步的研究。</p><p>  5.1.5 深入分析Access2000的加密技術</p><p>  由于上面的密碼都是由數(shù)字組成,因此有一定的片面性。因為對于密碼的組成來說,基本上不可能都是由純數(shù)字組成的。因此我還必須檢驗數(shù)字加上字母,還有常見的一些

83、符號所設置的密碼,看看通過上面的研究所采用的解密方式是否同樣適用于字母和符號,看看得到的結(jié)果是否依然正確。當然我采用的是同樣的方式來進行研究。我將db1.mdb文件復制一份命名為db3.mdb文件。然后,用獨占的方式打開,并為其設置密碼,密碼為我的名字的拼音加上我的學號ycchao.02。接下來便是同樣的運用UltraEdit32中的程序?qū)b3.mdb文件與db1.mdb文件進行比較。比較的結(jié)果如圖5.6所示:</p>

84、<p><b>  圖5.6 對比結(jié)果</b></p><p>  現(xiàn)在我再次將字節(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>  為了方便看清楚,我仍然將不同的地方加粗給表現(xiàn)了出來。</p><p>  現(xiàn)在開始計算結(jié)果,同樣的我將0x9D與0xE4進行異或運算,結(jié)果為0x79,而0x79正是Ascii碼中的“y”??磥砩厦鎸τ跀?shù)字所采用的加密運算方式同樣適用與字母。接下來我又計算了下一組數(shù)據(jù),我將0xEC與0x99進行異或運算,得到的結(jié)果為0x75,而0x75正是Asc

88、ii碼中的“u”,看來應該是正確的了。當然我仍然一一的進行了計算,到了“.”這個符號了,這是十分關鍵的地方,因為數(shù)字和字母我都已經(jīng)檢驗過了,結(jié)果是正確的,只要“.”符號也正確,那么Access2000的加密方式便出來了。0x08異或0x26,結(jié)果為0x2E,結(jié)果也是正確的。最后將所有的計算結(jié)果和起來為“yuchao.02”,而這運算出來的密碼明碼和我設置的密碼是一樣的??磥鞟ccess2000采用的就是異或運算對密碼加密的了。</

89、p><p>  5.2 Access解密工具的開發(fā)研究</p><p>  由于對Access2000數(shù)據(jù)庫加密技術已經(jīng)知道了,接下來我想要開發(fā)一個破解軟件來做進一步的驗證。當然因為知道了Access2000數(shù)據(jù)庫加密的方式,開發(fā)一個小的破解軟件就變的就比較簡單了。當然,最主要的還是Access2000數(shù)據(jù)庫的加密方式并不復雜,只是十分簡單的異或運算,這種一次運算便能達到解密效果的運算使得對于

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標題欄,按照上圖分別輸入“路徑”,“版本”和“密碼”。這樣我所需要的窗體便已經(jīng)飛快的完成了?,F(xiàn)在,就只需要加入源代碼了。</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按鈕的作用,但要真正完成文件的選擇與打開,還需要添加模塊內(nèi)容,其代碼如下:</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)結(jié)束。其代碼如下:</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壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論