已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 本文配套程序下載地址 : 無憂無慮畢設網(wǎng) ()-大學生畢業(yè)設計站 ,免費畢業(yè)設計論文 ,無憂無慮畢設網(wǎng) 大學生畢業(yè)設計 ,出售各類畢業(yè)設計源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費視頻教程 ,我們將竭誠為您服務! 程 序 加 密 技 術(shù) 的 實 現(xiàn) 設計人: 指導教師: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 中文摘要 隨著著網(wǎng)絡技術(shù)的發(fā)展,網(wǎng)絡安全也就成為當今網(wǎng)絡社會的焦點中的焦點,幾乎沒有人不在談論安全問題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰(zhàn)心驚。病毒、黑客的猖獗使身處今日網(wǎng)絡社會的人們感 覺到談網(wǎng)色變,無所適從。 本論文詳細介紹了根據(jù)磁盤序列號技術(shù),進行對文件加密過程,以及加密的必要性。本程序使用 DELPHI語言開發(fā)。 關(guān)鍵字: 加密 DELPHI 磁盤序列號 軟件保密 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 目 錄 中文摘要 第一章 引 言 第二章 開發(fā)環(huán)境及需求 第三章 加密技術(shù)的發(fā)展 第四章 密碼學簡介 第五章 DELPHI介紹 第六章 注冊技術(shù)實現(xiàn) 第七章、功能設計 第八章 詳細設計 結(jié) 論 參考文獻 致 謝 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第一章 引 言 隨著計算機技術(shù)的不 斷發(fā)展,面向各應用領(lǐng)域或行業(yè)需求的軟件不斷的孕育而生。但無論哪種優(yōu)秀的軟件,其內(nèi)部核心的技術(shù)往往是該軟件的命脈,一旦被他人竊取或被非法復制,由此受到的經(jīng)濟損失是無法估計的。軟件加密算法正是解決此問題的手段。隨著軟件加密算法研究的深入,軟件加密技術(shù)的不斷完善,將有效的打擊盜版非法軟件。使計算機行業(yè)更加規(guī)范化。對于保護知識產(chǎn)權(quán)法的實施也將有積極的意義。 隨著網(wǎng)絡技術(shù)的發(fā)展,網(wǎng)絡安全也就成為當今網(wǎng)絡社會的焦點中的焦點,幾乎沒有人不在談論網(wǎng)絡上的安全問題,病毒、黑客程序、郵件炸彈、遠程偵聽等這一切都無不讓人膽戰(zhàn)心驚 。病毒、黑客的猖獗使身處今日網(wǎng)絡社會的人們感覺到談網(wǎng)色變,無所適從。 但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發(fā)現(xiàn)之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所以我們不能有等網(wǎng)絡安全了再上網(wǎng)的念頭,因為或許網(wǎng)絡不能有這么一日,就象“矛”與“盾”,網(wǎng)絡與病毒、黑客永遠是一對共存體。 現(xiàn)代的電腦加密技術(shù)就是適應了網(wǎng)絡安全的需要 而應運產(chǎn)生的,它為我們進行一般的電子商務活動提供了安全保障,如在網(wǎng)絡中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術(shù)也不是什么新生事物,只不過應用在當今電子商務、電腦網(wǎng)絡中還是近幾年的歷史。下面我們就詳細介紹一下加密技術(shù)的方方面面,希望能為那些對加密技術(shù)還一知半解的朋友提供一個詳細了解的機會! 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第二章 開發(fā)環(huán)境及需求 2 1、開發(fā)目的 如何保護自己的軟件不被非授權(quán)盜用的問題,始終困擾著每一個程序員。當前世界上保護軟件的方法有很多,主要是采用加密(如加軟件狗)方式或軟件注冊方式。使用軟 件狗等加密方法,雖然其保護最有效,但對授權(quán)用戶的正常使用有一定的影響,而且軟件發(fā)放比較復雜,在實際運用中比較少被采用。而注冊登記方式則是當前最流行、運用最廣泛的方法,雖然有許多通用軟件其注冊碼可以很容易地被發(fā)燒友們所解,但對于獨立程序員為某特定應用設計的應用軟件而言,采用注冊機制顯得最經(jīng)濟、最方便,而且在一定的范圍內(nèi)非常有效。筆者在實際工作中,廣泛使用了軟件注冊方法,有效地維護了軟件的權(quán)益。 2 2、項目背景 dephi軟件的功能極為強大,深受程序員喜歡。用 dephi開發(fā)的軟件,可以很方便地加入注冊機制。下 面筆者就如何在 dephi開發(fā)的軟件中加入注冊機制與朋友們交流心得。 實現(xiàn)軟件注冊機制,需解決以下幾個問題: 1、如何加入注冊檢測,判斷軟件是否注冊;2、如何隱藏注冊碼,及是否注冊的標志; 3、在軟件不注冊情況下,如何限制軟件的使用時間或次數(shù); 4、對正常用戶而言,不應造成使用不便。對于以上四個問題,如何隱藏注冊碼及是否注冊的標志是關(guān)鍵。在 windows95中, win95 本身及大多數(shù)的應用軟件都將其各種參數(shù)放入注冊表中,因而注冊表內(nèi)的數(shù)據(jù)顯得極為龐大和復雜。如果將注冊標志隱藏在注冊表的某一角落中,想要找到它并理解它 是極其困難的事。因此我們可以利用這一點,在注冊表的某個分支上設置一個從名稱上看毫無特殊意義的關(guān)鍵字,將自己軟件的注冊標志數(shù)據(jù)存放在這里。以下是整個注冊機制的流程框圖: 2 3、開發(fā)環(huán)境 1. 硬件條件 CPU PIII 400 Mz 內(nèi)存 64M 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 硬盤 1G 2 軟件要求 開發(fā)語言環(huán)境 DELPHI 7 操作系統(tǒng) WIN2000 或者 WINXP,建議使用 WIN2000 其他要求:無 3. 運行需求 正常使用時不應出錯,若運行時遇到不可恢復的系統(tǒng)錯誤,也必須保證數(shù)據(jù)完好無損,對數(shù)據(jù)的精確度、時 間特性、適應性等都有一定要求,要求系統(tǒng)運行時能夠保證正確性、可靠性、高效性、完整性、易使用性、可維護性、可測試性、復用性、安全保密性、可移植性、互聯(lián)性。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第三章 加密技術(shù)的發(fā)展 一、加密的由來 加密作為保障數(shù)據(jù)安全的一種方式,它不是現(xiàn)在才有的,它產(chǎn)生的歷史相當久遠,它是起源于要追溯于公元前 2000年(幾個世紀了),雖然它不是現(xiàn)在我們所講的加密技術(shù)(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨 著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息。 近期加密技術(shù)主要應用于軍事領(lǐng)域,如美國獨立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機器是 German Enigma機,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于 Alan Turing 和 Ultra計劃以及其他人的努力,終于對德國人的密碼進行了破解。當初,計算機的研究就是為了破解德國人的密碼,人們并沒有想到計算機給今天帶來的信息革命。隨著計算機的發(fā)展,運算能力的增強,過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數(shù)據(jù)加密方式,如利用 ROSA 算法產(chǎn)生的私鑰和公鑰就是在這個基礎上產(chǎn)生的。 二、加密的概念 數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法人竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。 三、加密的理由 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 當今網(wǎng)絡社會選擇加密已是我們別無選擇,其一是我們知道在互聯(lián)網(wǎng) 上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對于一些大公司和一些機密文件在網(wǎng)絡上傳輸。而且這種不安全性是互聯(lián)網(wǎng)存在基礎 TCP/IP 協(xié)議所固有的,包括一些基于TCP/IP的服務;另一方面,互聯(lián)網(wǎng)給眾多的商家?guī)砹藷o限的商機,互聯(lián)網(wǎng)把全世界連在了一起,走向互聯(lián)網(wǎng)就意味著走向了世界,這對于無數(shù)商家無疑是夢寐以求的好事,特別是對于中小企業(yè)。為了解決這一對矛盾、為了能在安全的基礎上大開這通向世界之門,我們只好選擇了數(shù)據(jù)加密和基于加密技術(shù)的數(shù)字簽名。 加密在網(wǎng)絡上的作用就是防止有用或私有化信 息在網(wǎng)絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某種意義上來講意味著其安全體系的全面崩潰。 通過網(wǎng)絡進行登錄時,所鍵入的密碼以明文的形式被傳輸?shù)椒掌鳎W(wǎng)絡上的竊聽是一件極為容易的事情,所以很有可能黑客會竊取得用戶的密碼,如果用戶是 Root 用戶或 Administrator用戶,那后果將是極為嚴重的。 還有如果你公司在進行著某個招標項目的投標工作,工作人員通過電子郵件的方式把他們單位的標書發(fā)給招標單位,如果此時有另一位競 爭對手從網(wǎng)絡上竊取到你公司的標書,從中知道你公司投標的標的,那后果將是怎樣,相信不用多說聰明的你也明白。 這樣的例子實在是太多了,解決上述難題的方案就是加密,加密后的口令即使被黑客獲得也是不可讀的,加密后的標書沒有收件人的私鑰也就無法解開,標書成為一大堆無任何實際意義的亂碼??傊疅o論是單位還是個人在某種意義上來說加密也成為當今網(wǎng)絡社會進行文件或郵件安全傳輸?shù)臅r代象征! 數(shù)字簽名就是基于加密技術(shù)的,它的作用就是用來確定用戶是否是真實的。應用最多的還是電子郵件,如當用戶收到一封電子郵件時,郵 件上面標有發(fā)信人的姓名和信箱地址,很多人可能會簡單地認為發(fā)信人就是信上說明的那個人,但實際上偽造一封電子郵件對于一個通常人來說是極為容易的事。在這種情況下,就要用到加密技術(shù)基礎上的數(shù)字簽名,用它無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 來確認發(fā)信人身份的真實性。 類似數(shù)字簽名技術(shù)的還有一種身份認證技術(shù),有些站點提供入站 FTP和 WWW服務,當然用戶通常接觸的這類服務是匿名服務,用戶的權(quán)力要受到限制,但也有的這類服務不是匿名的,如某公司為了信息交流提供用戶的合作伙伴非匿名的 FTP服務,或開發(fā)小組把他們的 Web網(wǎng)頁上載到用戶的 WWW服務器上,現(xiàn) 在的問題就是,用戶如何確定正在訪問用戶的服務器的人就是用戶認為的那個人,身份認證技術(shù)就是一個好的解決方案。 在這里需要強調(diào)一點的就是,文件加密其實不只用于電子郵件或網(wǎng)絡上的文件傳輸,其實也可應用靜態(tài)的文件保護,如 PIP軟件就可以對磁盤、硬盤中的文件或文件夾進行加密,以防他人竊取其中的信息。 四、兩種加密方法 加密技術(shù)通常分為兩大類:“對稱式”和“非對稱式”。 對稱式加密就是加密和解密使用同一個密鑰,通常稱之為“ Session Key ”這種加密技術(shù)目前被廣泛采用,如 美國政府所采用的 DES 加密標準就是一種典型的“對稱式”加密法,它的 Session Key長度為 56Bits。 非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網(wǎng)絡上傳輸加密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的, 也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。 五、加密技術(shù)中的摘要函數(shù)( MAD、 MAD 和 MAD) 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 摘要是一種防止改動的方法,其中用到的函數(shù)叫摘要函數(shù)。這些函數(shù)的輸入可以是任意大小的消息,而輸出是一個固定長度的摘要。摘要有這樣一個性質(zhì),如果改變了輸入消息中的任何東西,甚至只有一位,輸出的摘要將會發(fā)生不可預測的改變,也就是說輸入消息的每一位對輸出摘要都有影響??傊?,摘要算法從給定的文本塊中產(chǎn)生一個數(shù)字簽名( fingerprint 或 message digest),數(shù)字簽名可以用于防止有人從一個簽名上獲取文本信息或改變文本信息內(nèi)容和進行身份認證。摘要算法的數(shù)字簽名原理在很多加密算法中都被使用,如 SO/KEY和 PIP( pretty good privacy)。 現(xiàn)在流行的摘要函數(shù)有 MAD和 MAD,但要記住客戶機和服務器必須使用相同的算法,無論是 MAD還是 MAD, MAD 客戶機不能和 MAD服務器交互。 MAD摘要算法的設計是出于利用 32位 RISC 結(jié)構(gòu)來最大其吞吐量,而不需要大量的替換表( substitution table)來考慮的 。 MAD算法是以消息給予的長度作為輸入,產(chǎn)生一個 128位的 指紋 或 消息化 。要產(chǎn)生兩個具有相同消息化的文字塊或者產(chǎn)生任何具有預先給定 指紋 的消息,都被認為在計算上是不可能的。 MAD 摘要算法是個數(shù)據(jù)認證標準。 MAD 的設計思想是要找出速度更快,比 MAD 更安全的一種算法, MAD的設計者通過使 MAD在計算上慢下來,以及對這些計算做了一些基礎性的改動來解決安全性這一問題,是 MAD算法的一個擴展。 六、密鑰的管理 密鑰既然要求保密,這就涉及到密鑰的管理問題,管理不好, 密鑰同樣可能被無意識地泄露,并不是有了密鑰就高枕無憂,任何保密也只是相對的,是有時效的。要管理好密鑰我們還要注意以下幾個方面: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 1、密鑰的使用要注意時效和次數(shù) 如果用戶可以一次又一次地使用同樣密鑰與別人交換信息,那么密鑰也同其它任何密碼一樣存在著一定的安全性,雖然說用戶的私鑰是不對外公開的,但是也很難保證私鑰長期的保密性,很難保證長期以來不被泄露。如果某人偶然地知道了用戶的密鑰,那么用戶曾經(jīng)和另一個人交換的每一條消息都不再是保密的了。另外使用一個特定密鑰加密的信息越多,提供給竊聽者的材料 也就越多,從某種意義上來講也就越不安全了。 因此,一般強調(diào)僅將一個對話密鑰用于一條信息中或一次對話中,或者建立一種按時更換密鑰的機制以減小密鑰暴露的可能性。 2、多密鑰的管理 假設在某機構(gòu)中有 100個人,如果他們?nèi)我鈨扇酥g可以進行秘密對話,那么總共需要多少密鑰呢?每個人需要知道多少密鑰呢?也許很容易得出答案,如果任何兩個人之間要不同的密鑰,則總共需要 4950個密鑰,而且每個人應記住 99個密鑰。如果機構(gòu)的人數(shù)是1000、 10000人或更多,這種辦法就顯然過于愚蠢了,管理密鑰將是 一件可怕的事情。 Kerberos提供了一種解決這個較好方案,它是由 MIT發(fā)明的,使保密密鑰的管理和分發(fā)變得十分容易,但這種方法本身還存在一定的缺點。為能在因特網(wǎng)上提供一個實用的解決方案, Kerberos建立了一個安全的、可信任的密鑰分發(fā)中心( Key Distribution Center,KDC),每個用戶只要知道一個和 KDC進行會話的密鑰就可以了,而不需要知道成百上千個不同的密鑰。 假設用戶甲想要和用戶乙進行秘密通信,則用戶甲先和 KDC 通信,用只有用戶甲和KDC知道的密鑰進行加密 , 用戶甲告訴 KDC 他想和用戶乙進行通信, KDC 會為用戶甲和用戶乙之間的會話隨機選擇一個對話密鑰,并生成一個標簽,這個標簽由 KDC 和用戶乙之間的密鑰進行加密,并在用戶甲啟動和用戶乙對話時,用戶甲會把這個標簽交給用戶乙。這個標簽的作用是讓用戶甲確信和他交談的是用戶乙,而不是冒充者。因為這個標簽是由只有用戶乙無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 和 KDC知道的密鑰進行加密的,所以即使冒充者得到用戶甲發(fā)出的標簽也不可能進行解密,只有用戶乙收到后才能夠進行解密,從而確定了與用戶甲對話的人就是用戶乙。 當 KDC生成標簽和隨機會話密碼,就會把它們用只 有用戶甲和 KDC 知道的密鑰進行加密,然后把標簽和會話鑰傳給用戶甲,加密的結(jié)果可以確保只有用戶甲能得到這個信息,只有用戶甲能利用這個會話密鑰和用戶乙進行通話。同理, KDC會把會話密碼用只有 KDC和用戶乙知道的密鑰加密,并把會話密鑰給用戶乙。 用戶甲會啟動一個和用戶乙的會話,并用得到的會話密鑰加密自己和用戶乙的會話,還要把 KDC傳給它的標簽傳給用戶乙以確定用戶乙的身份,然后用戶甲和用戶乙之間就可以用會話密鑰進行安全的會話了,而且為了保證安全,這個會話密鑰是一次性的,這樣黑客就更難進行破解了。同時由于密 鑰是一次性由系統(tǒng)自動產(chǎn)生的,則用戶不必記那么多密鑰了,方便了人們的通信。 七、數(shù)據(jù)加密的標準 最早、最著名的保密密鑰或?qū)ΨQ密鑰加密算法 DES(Data Encryption Standard)是由 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用軟件進行解碼需用很長時間,而用硬件解碼速度非??臁P疫\的是,當時大多數(shù)黑客并沒有足夠的設備制造出這種硬件設備。在 1977 年,人們估計要耗資兩千萬美元才能建成一個專門計算機用于 DES 的解密,而且需要 12 個小時的破解才能得到結(jié)果。當時DES被認為是一種十分強大的加密方法。 隨著計算機硬件的速度越來越快,制造一臺這樣特殊的機器的花費已經(jīng)降到了十萬美元左右,而用它來保護十億美元的銀行,那顯然是不夠保險了。另一方 面,如果只用它來保護一臺普通服務器,那么 DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個服務無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 器而花那么多的錢破解 DES密文。 另一種非常著名的加密算法就是 RSA了, RSA(Rivest-Shamir-Adleman)算法是基于大數(shù)不可能被質(zhì)因數(shù)分解假設的公鑰體系。簡單地說就是找兩個很大的質(zhì)數(shù)。一個對外公開的為“公鑰”( Prblic key) ,另一個不告訴任何人,稱為 私鑰”( Private key)。這兩個密鑰是互補的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。 假設 用戶甲要寄信給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到后就可以用自己的私鑰解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道乙的公鑰,他們都可以給乙發(fā)信,那么乙怎么確信是不是甲的來信呢?那就要用到基于加密技術(shù)的數(shù)字簽名了。 甲用自己的私鑰將簽名內(nèi)容加密,附加在郵件后,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文 被乙收到以后,乙用自己的私鑰將郵件解密,得到甲的原文和數(shù)字簽名,然后用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了。 八、加密技術(shù)的應用 加密技術(shù)的應用是多方面的,但最為廣泛的還是在電子商務和 VPN 上的應用,下面就分別簡敘。 1、在電子商務方面的應用 電子商務( E-business)要求顧客可以在網(wǎng)上進行各種商務活動,不必擔心自己的信用卡會被人盜用。在過去,用戶為了防止信用卡的號碼被竊取到,一般是通過電話訂貨,然后使用用戶的信用卡進行付款。現(xiàn)在人們開始用 RSA(一種公開 /私有密鑰)的加密技術(shù),提高信用卡交易的安全性,從而使電子商務走向?qū)嵱贸蔀榭赡堋?無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 許多人都知道 NETSCAPE公司是 Internet 商業(yè)中領(lǐng)先技術(shù)的提供者,該公司提供了一種基于 RSA和保密密鑰的應用于因特網(wǎng)的技術(shù),被稱為安全插座層( Secure Sockets Layer,SSL)。 也許很多人知道 Socket,它是一個編程界面,并不提供任何安全措施,而 SSL不但提供編程界面,而且向上提供一種安全的服務, SSL3.0 現(xiàn)在已經(jīng)應用到了服務器和瀏覽器上,SSL2.0則只能應用于服務 器端。 SSL3.0用一種電子證書( electric certificate)來實行身份進行驗證后,雙方就可以用保密密鑰進行安全的會話了。它同時使用“對稱”和“非對稱”加密方法,在客戶與電子商務的服務器進行溝通的過程中,客戶會產(chǎn)生一個 Session Key,然后客戶用服務器端的公鑰將 Session Key 進行加密,再傳給服務器端,在雙方都知道 Session Key 后,傳輸?shù)臄?shù)據(jù)都是以 Session Key 進行加密與解密的,但服務器端發(fā)給用戶的公鑰必需先向有關(guān)發(fā)證機關(guān)申請,以得到公證。 基 于 SSL3.0 提供的安全保障,用戶就可以自由訂購商品并且給出信用卡號了,也可以在網(wǎng)上和合作伙伴交流商業(yè)信息并且讓供應商把訂單和收貨單從網(wǎng)上發(fā)過來,這樣可以節(jié)省大量的紙張,為公司節(jié)省大量的電話、傳真費用。在過去,電子信息交換( Electric Data Interchange, EDI)、信息交易( information transaction)和金融交易( financial transaction)都是在專用網(wǎng)絡上完成的,使用專用網(wǎng)的費用大大高于互聯(lián)網(wǎng)。正是這樣巨大的誘惑,才使人們開始發(fā)展因特網(wǎng)上的電子商務, 但不要忘記數(shù)據(jù)加密。 2、加密技術(shù)在 VPN中的應用 現(xiàn)在,越多越多的公司走向國際化,一個公司可能在多個國家都有辦事機構(gòu)或銷售中心,每一個機構(gòu)都有自己的局域網(wǎng) LAN( Local Area Network),但在當今的網(wǎng)絡社會人們的要求不僅如此,用戶希望將這些 LAN連結(jié)在一起組成一個公司的廣域網(wǎng),這個在現(xiàn)在已不是什么難事了。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 事實上,很多公司都已經(jīng)這樣做了,但他們一般使用租用專用線路來連結(jié)這些局域網(wǎng) ,他們考慮的就是網(wǎng)絡的安全問題?,F(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中的用戶就可以看到真正的信息了。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第四章 密碼學簡介 4 1 概念 (1) 發(fā)送者和接收者 假設發(fā)送者想發(fā)送消息給接收者,且想安全地發(fā)送信息:她想確信偷聽者 不能閱讀發(fā)送的消息。 (2) 消息和加密 消息被稱為明文。用某種方法偽裝消息以隱藏它的內(nèi)容的過程稱為加密,加了密的消息稱為密文,而把密文轉(zhuǎn)變?yōu)槊魑牡倪^程稱為解密。圖 2-1表明了這個過程。 加密 解密明文 密文 原 始 明 文 圖 2-1 加密和解密 明文用 M(消息)或 P(明文)表示,它可能是比特流(文本文件、位圖、數(shù)字化的語音流或數(shù)字化的視頻圖像)。至于涉及到計算機, P是簡單 的 二進制數(shù)據(jù)。明文可被傳送或存儲,無論在哪種情況, M指待加密的消息。 密文用 C表示,它也是二進制數(shù)據(jù),有時和 M一樣大 ,有時稍大(通過壓縮和加密的結(jié)合, C有可能比 P小些。然而,單單加密通常達不到這一點)。加密函數(shù) E 作用于 M得到密文C,用數(shù)學表示為: E( M) =C. 相反地,解密函數(shù) D作用于 C產(chǎn)生 M D( C) =M. 先加密后再解密消息,原始的明文將恢復出來,下面的等式必須成立: D( E( M) =M (3) 鑒別、完整性和抗抵賴 除了提供機密性外,密碼學通常有其它的作用: . (a) 鑒別 消息的接收者應該能夠確認消息的來源;入侵者不可能偽裝成他人。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: (b) 完整性 檢驗 消息的接收者應該能夠驗證在傳送過程中消息沒有被修改; 入侵者不可能用假消息代替合法消息。 (c) 抗抵賴 發(fā)送者事后不可能虛假地否認他發(fā)送的消息。 (4) 算法和密鑰 密碼算法也叫密碼,是用于加密和解密的數(shù)學函數(shù)。(通常情況下,有兩個相關(guān)的函數(shù):一個用作加密,另一個用作解密) 如果算法的保密性是基于保持算法的秘密,這種算法稱為受限制的算法。受限制的算法具有歷史意義,但按現(xiàn)在的標準,它們的保密性已遠遠不夠。大的或經(jīng)常變換的用戶組織不能使用它們,因為每有一個用戶離開這個組織,其它的用戶就必須改換另外不同的算法。如果有人無意暴露了這個秘密,所有人都必須改變他們的算 法。 更糟的是,受限制的密碼算法不可能進行質(zhì)量控制或標準化。每個用戶組織必須有他們自己的唯一算法。這樣的組織不可能采用流行的硬件或軟件產(chǎn)品。但竊聽者卻可以買到這些流行產(chǎn)品并學習算法,于是用戶不得不自己編寫算法并予以實現(xiàn),如果這個組織中沒有好的密碼學家,那么他們就無法知道他們是否擁有安全的算法。 盡管有這些主要缺陷,受限制的算法對低密級的應用來說還是很流行的,用戶或者沒有認識到或者不在乎他們系統(tǒng)中內(nèi)在的問題。 現(xiàn)代密碼學用密鑰解決了這個問題,密鑰用 K 表示。 K 可以是很多數(shù)值里的任意值。密鑰 K的可能值的范圍叫做密 鑰空間。加密和解密運算都使用這個密鑰(即運算都依賴于密鑰,并用 K作為下標表示),這樣,加 /解密函數(shù)現(xiàn)在變成: EK(M)=C DK(C)=M. 這些函數(shù)具有下面的特性: DK( EK( M) =M. 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 有些算法使用不同的加密密鑰和解密密鑰,也就是說加密密鑰 K1 與相應的解密密鑰 K2不同,在這種情況下: EK1(M)=C DK2(C)=M DK2 (EK1(M)=M 所有這些算法的安全性都基于密鑰的安全性;而不是基于算法的細節(jié)的安全性。這就意味著算法可以公開,也可以被分析,可以大量生產(chǎn)使用算法的產(chǎn)品,即使偷聽 者知道你的算法也沒有關(guān)系;如果他不知道你使用的具體密鑰,他就不可能閱讀你的消息。 密碼系統(tǒng)由算法、以及所有可能的明文、密文和密鑰組成的。 基于密鑰的算法通常有兩類:對稱算法和公開密鑰算法。下面將分別介紹: 4 2 對稱密碼算法 對稱算法有時又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數(shù)對稱算法中,加 /解密密鑰是相同的。這些算法也叫秘密密鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前,商定一個密鑰。對稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都能對消息進行加 /解密 。只要通信需要保密,密鑰就必須保密。 對稱算法的加密和解密表示為: EK( M) =C DK( C) =M 對稱算法可分為兩類。一次只對明文中的單個比特(有時對字節(jié))運算的算法稱為序列算法或序列密碼。另一類算法是對明文的一組比特亞行運算,這些比特組稱為分組,相應的算法稱為分組算法或分組密碼。現(xiàn)代計算機密碼算法的典型分組長度為 64 比特 這個長度大到足以防止分析破譯,但又小到足以方便使用(在計算機出現(xiàn)前,算法普遍地每次只對明文的一個字符運算,可認為是序列密碼對字符序列的運算)。 4 3 公開密碼算法 公開密鑰算法(也叫 非對稱算法)是這樣設計的:用作加密的密鑰不同于用作解密的密鑰,而且解密密鑰不能根據(jù)加密密鑰計算出來(至少在合理假定的長時間內(nèi))。之所以叫做公開密鑰算法,是因為加密密鑰能夠公開,即陌生者能用加密密鑰加密信息,但只有用相應無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 的解密密鑰才能解密信息。在這些系統(tǒng)中,加密密鑰叫做公開密鑰(簡稱公鑰),解密密鑰叫做私人密鑰(簡稱私鑰)。私人密鑰有時也叫秘密密鑰。為了避免與對稱算法混淆,此處不用秘密密鑰這個名字。 用公開密鑰 K加密表示為 EK(M)=C. 雖然公開密鑰和私人密鑰是不同的,但用相應的私人密鑰解密可表示為: DK(C)=M 有時消息用私人密鑰加密而用公開密鑰解密,這用于數(shù)字簽名(后面將詳細介紹),盡管可能產(chǎn)生混淆,但這些運算可分別表示為: EK(M)=C DK(C)=M 當前的公開密碼算法的速度,比起對稱密碼算法,要慢的多,這使得公開密碼算法在大數(shù)據(jù)量的加密中應用有限。 4 4 單向散列函數(shù) 單向散列函數(shù) H(M) 作用于一個任意長度的消息 M,它返回一個固定長度的散列值 h,其中 h 的長度為 m 。 輸入為任意長度且輸出為固定長度的函數(shù)有很多種,但單向散列函數(shù)還有使其單向的其它特性: (1) 給定 M ,很容易計算 h ; (2) 給定 h ,根據(jù) H(M) = h 計算 M 很難 ; (3) 給定 M ,要找到另一個消息 M 并滿足 H(M) = H(M ) 很難。 在許多應用中,僅有單向性是不夠的,還需要稱之為 “ 抗碰撞 ” 的條件: 要找出兩個隨機的消息 M 和 M ,使 H(M) = H(M) 滿足很難。 由于散列函數(shù)的這些特性,由于公開密碼算法的計算速度往往很慢,所以,在一些密碼協(xié)議中,它可以作為一個消息 M 的摘要,代替原始消息 M,讓發(fā)送者為 H(M) 簽名而不是對 M 簽名 。 如 SHA 散列算法用于數(shù)字簽名協(xié)議 DSA中。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 4 5 數(shù)字簽名 提到數(shù)字簽名就離不開公開密碼系統(tǒng)和散列技術(shù)。 有幾種公鑰算法能用作數(shù)字簽名。在一些算法中,例如 RSA,公鑰或者私鑰都可用作加密。用你的私鑰加密文件,你就擁有安全的數(shù)字簽名。在其它情況下,如 DSA,算法便區(qū)分開來了 數(shù)字簽名算法不能用于加密。這種思想首先由 Diffie和 Hellman 提出 。 基本協(xié)議是簡單的 : (1) A 用她的私鑰對文件加密,從而對文件簽名。 (2) A 將簽名的文件傳給 B。 (3) B用 A的公鑰解密文件,從而驗證簽名。 這個協(xié)議中 ,只需要證明 A的公鑰的確是她的。如果 B不能完成第( 3)步,那么他知道簽名是無效的。 這個協(xié)議也滿足以下特征: (1) 簽名是可信的。當 B用 A的公鑰驗證信息時,他知道是由 A簽名的。 (2) 簽名是不可偽造的。只有 A知道她的私鑰。 (3) 簽名是不可重用的。簽名是文件的函數(shù),并且不可能轉(zhuǎn)換成另外的文件。 (4) 被簽名的文件是不可改變的。如果文件有任何改變,文件就不可能用 A的公鑰驗證。 (5) 簽名是不可抵賴的。 B不用 A的幫助就能驗證 A的簽名。 在實際應用中,因為公共密碼算法的速度太慢,簽名者往往是對消息的散列 簽名而不是對消息本身簽名。這樣做并不會降低簽名的可信性。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第五章 DELPHI介紹 4.1 Delphi歷史回顧 Delphi是第四代編程語言,是 RAD( Rapid Application Development,快速應用程序開發(fā))工具的代表。從核心上說, Delphi是一個 Pascal編譯器。 Delphi 語言的發(fā)展歷程如下: Delphi 1 1995 年, Borland推出了 Delphi 1。 Delphi 1提供了一種完全不同的開發(fā) Windows程序的方式:可視化的開發(fā)環(huán)境、編譯后的可執(zhí)行軟件、 DDL、數(shù)據(jù)庫,以及可以毫無限制地給可視環(huán)境命名。而且 Delphi 1 是第一個綜合了可視化開發(fā)環(huán)境、優(yōu)化的源代碼編譯器、可擴展的數(shù)據(jù)庫訪問引擎的 Windows開發(fā)工具,它奠定了 RAD的概念。 Delphi 2 一年后的 Delphi 2在 32位的操作系統(tǒng) Windows 95 和 Windows NT下實現(xiàn)了原有的一切功能。另外, Delphi 2還增加了許多 Delphi 1沒有的功能,例如 32位的編譯器能生成速度更快的應用程序,對象庫得到進一步的豐富和擴展,完善了數(shù)據(jù)庫支持,改進了字符串處理,支持 OLE對象鏈接與 嵌入和可視化窗體繼承以及與 16位的Delphi兼容等。 Delphi 2 成為衡量其他 RAD工具的標準。為了滿足 IT 產(chǎn)業(yè)的需要, Delphi 2增強了數(shù)據(jù)庫和客戶端 /服務器的功能。 Delphi 3 1997 年, Borland公司推出了 Delphi 3。 Delphi 3使本來極其復雜的COM、 ActiveX、 WWW應用程序開發(fā)、 “ 瘦 ” 客戶應用程序、多層數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)等技術(shù)變得非常容易。雖然 Delphi 3與 Delphi 1 編寫應用程序的基本方法大都相同,但 Delphi 3的 Code Insight(代碼 內(nèi)視)技術(shù)卻簡化了代碼編寫過程。 Delphi 4 1998 年推出的 Delphi 4 致力于使 Delphi更易于使用。 Module Explore(模塊導航)技術(shù)的引入使程序員能夠以一致的圖形界面瀏覽和編輯代碼。代碼導航和類自動生成的功能使程序員只需關(guān)注應用程序本身,而不必在輸入代碼上花費太多精力。 IDE經(jīng)過重新設計可支持浮動或可??康墓ぞ邫诤痛翱?,調(diào)試器也做了改進。 Delph無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: i 4不愧為一個先進的開發(fā)工具,它的 MIDAS、 DCOM和 CORBA等技術(shù)使 Delphi 4的應用范圍擴展到企業(yè)級用戶。 D elphi 5 1999 年, Delphi 5推出。 Delphi 5 通過增加更多的功能使程序的編寫更簡單。新功能包括進一步增強了 IDE和調(diào)試器的功能、提供了 Team Source 小組開發(fā)軟件和轉(zhuǎn)換工具等。 Delphi 5 也為簡化 Internet 的開發(fā)增加了許多新功能,包括 Active Server Object Wizard 用于創(chuàng)建 ASP, Internet Express 組件用于支持 XML和 MIDAS功能,使 Delphi成為 Internet的一個通用數(shù)據(jù)平臺。 Delphi 6 Delphi 6 不但在傳統(tǒng) 的開發(fā)能力方面持續(xù)改進,讓程序員能夠享有更具生產(chǎn)力的開發(fā)環(huán)境,而且對于最新的信息技術(shù),例如 XML/XSL、 SOAP、 Web Service等也都有非常良好的支持,讓程序員能夠快速地使用這些新技術(shù)。此外, Delphi 6在核心運行時函數(shù)庫以及編譯器方面也有了不少改善,不但讓程序員可以開發(fā)功能更強的窗口應用程序,也可以更平順地移植到 Linux平臺,再搭配跨平臺的新可視化組件 Framework CLX,即使是 Windows 程序員也可以快速地開發(fā) Linux平臺上的應用系統(tǒng)。 然而,實際上 Delphi 7 之所以這么快 推出,很大原因上是由于 Delphi 6 的很多新特性還不是很成熟,在 Delphi 7中這些新特性得到了很大的改善和提高。下面,我們將會詳細介紹 Delphi 6 和 Delphi 7共有的一些新特性。 4.2 Delphi 的新特性 1. 功能更強大的集成開發(fā)環(huán)境 和以往 Delphi的每一個新版本一樣, Delphi 7 繼續(xù)改善了開發(fā)環(huán)境,幫助程序員提高效率。 Delphi 7在集成開發(fā)環(huán)境中加入了很多讓程序員愛不釋手的新功能,下面是對它們的一個簡單介紹。 ( 1) Code Complete(代碼完成) 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Code Complete功能在 Delphi 5中就已經(jīng)加入了,這項功能非常受程序員的歡迎,因為 Code Complete可以大幅度地減少程序員需要鍵入的程序代碼,并且減少鍵入錯誤。 Delphi 7的 Code Complete 功能在原有的基礎上繼續(xù)改善,新的 Code Complete 窗口不但可以由程序員自行調(diào)整大小,而且可以使用不同的顏色代表不同的對象,例如變量、方法和特性等。 Delphi 7 的 Code Complete窗口加入了色彩分析,以及對對象分門別類的能力。此外,新的 Code Complete 窗口也會更聰明地 過濾對象能夠使用的 PME,避免了以往 Delphi 5的 Code Complete 窗口無法顯示一些 PME的困窘。另外,程序員在新的 Code Complete窗口中選擇使用某個方法之后, Code Complete會自動地在方法名稱之后加上 “ (); ” 字符,把光標停在圓括號之中,并且自動顯示這個方法需要的所有參數(shù),Delphi的確比以前更聰明更方便了。 ( 2) Object TreeView(對象樹視圖) 另外一個新功能就是 Delphi 7的 Object TreeView 窗口。這個新的窗口除了可以顯示窗體中所有的對 象之外,也可以以分層方式表達組件之間的關(guān)系。當程序員在 Object TreeView窗口中單擊了一個組件之后,這個組件會立刻出現(xiàn)在對象查看器之中,這時程序員可以改變這個對象的特性值和事件處理程序。 當窗體復雜,擁有大量的組件時, Object TreeView 窗口可以讓用戶迅速找到這個組件,并且知道與當前組件相關(guān)的組件,非常方便。 此外 Delphi 7的編輯器也強化了 Class Complete 的功能,讓程序員在定義類別程序代碼時擁有更大的彈性,并且加強了 Interface Complete 的功能,讓程序員在 撰寫接口程序代碼時也能夠享有 Code Complete功能。 ( 3)可定制的 View 窗口 Delphi 7最強勁的集成開發(fā)環(huán)境功能應該要算是新的可定制的 View 窗口了。在 Delphi 7中,編輯器不但可以讓程序員觀看和編輯 Object Pascal的程序代碼,而且如果程序員編輯的是 Web應用程序,那么還可以直接在編輯器中查看 HTML程序代碼、腳本語無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 言程序代碼,預覽 Web應用程序執(zhí)行結(jié)果的畫面以及 Web應用程序產(chǎn)生的 HTML程序代碼。 ( 4)新添加 Indy Intercepts 和 Indy I/O Handler 構(gòu)件組 企業(yè)版的 Delphi 7 中,這兩個構(gòu)件組基本上提供了針對現(xiàn)今流行的 Internet協(xié)議編程的構(gòu)件??梢赃M行更為底層的操作。 ( 5)新添加 IW Standard、 IW Data、 IW Client Side 和 IW Control 構(gòu)件組 這些構(gòu)件也是 Delphi 7 的顯著改革之一,將 Intraweb集成到了標準的構(gòu)件板中,我們就可以很方便地開發(fā)基于 Web的應用程序。 ( 6)新添加的 Rave 報表構(gòu)件組 Delphi 7的標準構(gòu)件板中已經(jīng)沒有了原來的 QuickReport構(gòu)件組,取而代之的是 RAVE報表制作組件,并且提供專門的報表制作工具 Rave Designer。 Rave報表構(gòu)件是一個可視化的報表設計工具,大大簡化了在應用程序中加入報表的工作。用 Rave報表構(gòu)件可以做出各種不同的報表,從最簡單的到非常復雜、個性化的報表都可以完成。它的功能包括:圖片支持、對齊、精確頁面定位、打印機設置、字體控制、打印預覽、報表內(nèi)容重用,并支持 PDF、 HTML、 RTF等文本格式。 . 新一代數(shù)據(jù)存取引擎 DBExpress Borland為了讓 Windows 平臺上的 Delphi 以及 Linux平臺上的 Kylix擁有共同的數(shù)據(jù)存取引擎,決定開發(fā)新一代的數(shù)據(jù)存取引擎,這就是 DBExpress。 DBExpress 是一組存取各種不同關(guān)聯(lián)數(shù)據(jù)庫的原生驅(qū)動程序,以及一組基于這些驅(qū)動程序而開發(fā)的統(tǒng)一的組件。由于原生驅(qū)動程序和組件的開發(fā)都考慮了跨平臺,因此 Delphi 和 Kylix都可以使用這組驅(qū)動程序和組件。程序員通過統(tǒng)一的組件來存取不同的數(shù)據(jù)庫,以方便開發(fā)數(shù)據(jù)庫應用系統(tǒng)。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 3. 開發(fā) Internet/Intranet 應用系統(tǒng)的 WebSnap 組件組 Delphi 7 中最重要的新增功能之一應該要算是能夠讓程序員開發(fā) Internet/Intranet應用系統(tǒng)的新架構(gòu)和組件,這個新功能稱為 WebSnap。 Delphi 7的 WebSnap允許程序員使用組件和可視化的方式快速開發(fā)復雜的 Internet/Intranet 應用系統(tǒng)。 WebSnap的特點是允許程序員直接在這些組件之中加入腳本語言,并且能夠直接在 Delphi 的集成開發(fā)環(huán)境中撰寫腳本語言、預覽 Web應用程序的輸出結(jié)果以及 Web應用程序產(chǎn)生的 HTML程序代碼。 4. MIDAS 的進化版本 DataSnap 在 Delphi 7中, MIDAS 被改名為 DataSnap。 DataSnap不但強化了 MIDAS 原有的功能,更加入了許多新的組件,讓程序員可以使用它開發(fā)出更為強勁的應用系統(tǒng)。此外 DataSnap也改善了 MIDAS的執(zhí)行效率,讓使用它的應用程序能夠執(zhí)行得更快。 5. 對 XML/XSL 的支持 Delphi 6的另外一個重要的改良就是對于 XML/XSL的支持。除了增加許多新的 VCL組件,讓程序員不必使用低階的 COM接口或是復雜的 API就可以輕易的處理 XML/XSL文件和資料之外, MIDAS 的資料更可以直接輸出成 XML,或是把 XML的資料直接導入成 MIDAS的 Data Packet, Delphi 的程序員再也不需要為復雜的 XML程序設計傷腦筋了。 6. 開發(fā) Web Service 的向?qū)Ш徒M件 Web Service該是現(xiàn)在最熱門的 Web技術(shù)之一了,不管是 IBM或是 Microsoft都在發(fā)展 Web Service的解決方案。 Delphi 6在這方面也不落后, Delphi 6 提供了 SOAP和 Web Service向?qū)В尦绦騿T能夠快速地開發(fā) SOAP 應用系統(tǒng),也可以匯入 WSDL自動產(chǎn)生骨架程序代碼。由于 SOAP 是未來 Web和分布式應用系統(tǒng)的主流技術(shù),而 Web Service更是未來 Web應 用系統(tǒng)的主要軟件架構(gòu),因此對于程序員來說,掌握這些技術(shù)非常重要。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Delphi 6是 Borland 支持 SOAP的第一個產(chǎn)品,由于 SOAP是標準的協(xié)議,因此通過Delphi 6開發(fā)的 SOAP 應用系統(tǒng)可以和 COM+、 EJB或是 Microsoft的 .NET 溝通, Delphi的程序員現(xiàn)在就可以使用它開發(fā)未來的應用系統(tǒng)。在 Delphi 6中也提供了 6個 VCL組件讓程序員開發(fā) SOAP和 Web Service的應用系統(tǒng)。 Delphi 6 允許程序員快速建立 SOAP應用程序和 Web Service。 總的來說, Delphi 6最主要的新功能是在 XML/XSL, Internet/Intranet 以及 SOAP和 Web Service方面的加強。同時為了跨平臺的目的,在數(shù)據(jù)存取引擎、可視化組件架構(gòu)和運行時期函數(shù)庫方面也進行了大幅度的改善。至于在 BDE, ADO和 COM+方面則只有小幅度的進步。 當 Microsoft不再推出 VB/VC新一代版本的 Windows開發(fā)工具,而 Power Builder等其他 Windows開發(fā)工具也逐漸被淘汰之際, Delphi 6可以說是惟一最新的 Windows開發(fā)工具,也是最好的 Windows 開發(fā)工具。 如果你仍然需要在 Windows下開發(fā)應用系統(tǒng),或是需要使用 /整合最新的信息技術(shù),那么 Delphi 6 仍然是非常值得購買和升級的開發(fā)工具。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第六章 注冊技術(shù)實現(xiàn) 一、注冊源 在 WIN98/95 的保護模式下,要根據(jù)硬件信息形成注冊碼可不是 一件容易的事,在實模式下可通過硬盤端口 1F6H 和 1F7H 直接讀取硬盤的序列號等信息作為注冊的數(shù)據(jù)源 。還可以 利用 BIOS 中的主板序列號、 BIOS 版本序列號或主機出廠日期和標志等,完全可以作為注冊碼的注冊源。如 ROMBIOS 中 F000H-FFFFH 區(qū)域 中就存在與硬件配置有關(guān)的信息,還 可以采集其它一處或幾處主板等的信息作為注冊碼的生產(chǎn)基地。例如可根據(jù)F000H:FFF5H-F000H: FFFFH 中存放的主機出廠日期和主機標志值,產(chǎn)生應用程序的注冊碼。由于計算機產(chǎn)品的更新?lián)Q代比較快,而且所有用戶使用的計算機不可能配置都完全相 同,所以注冊碼產(chǎn)生的源也不會完全相同。而且這些硬件信息內(nèi)容在任何操作系統(tǒng)下均完全相同,兼容性非常好,更不會因為操作系統(tǒng)的更新而造成注冊功能失效。注冊源確定之后,關(guān)鍵的問題就是共享軟件安裝程序如何采集注冊源信息,并讓用戶將其返回 給開發(fā)者。最簡單的方法就是將采集到的注冊源信息經(jīng)過位操作加密后存放到一個文本中,形成注冊碼的數(shù)據(jù)源資料。這個注冊源數(shù)據(jù)串可稍長一些,但不宜過長,使用戶能夠通過電子郵箱、電話或信件順利轉(zhuǎn)給開發(fā)者為宜。 二、注冊機 開發(fā)者得到用戶提供的注冊源數(shù)據(jù)之后,就需要利用注冊機生成注冊碼并返回給用戶。注冊機利用既定的位操作和不可逆算法,形成用戶比較容易操作的字符串注冊碼,注冊碼的長度一般為 8-16 位為宜,用戶只需注冊一次就可以長期使用,所以注冊碼的長度不會影響用戶的注冊操作。當然注冊機的算法應與共享軟件中的算法部分基 本相同。對于遠程用戶,注冊機應該具有從 鍵盤 和內(nèi)存兩種取得注冊源數(shù)據(jù)的功能,所以注冊機的加密算法實際為兩個分支:第一個分支是從 鍵盤 獲取注冊源數(shù)據(jù)后直接根據(jù)注冊算法形成注冊碼的過程,是直接給遠程用戶反饋注冊碼的過程;第二個分支是直接從 ROM BIOS 中根據(jù)注冊源算法取得注冊源數(shù)據(jù),再根據(jù)注冊算法形成注冊碼的過程,是直接讀取本地機注冊碼的。 用戶得到注冊碼后,根據(jù)共享發(fā)布軟件的注冊方法進行一次注冊,應用程序會自動將這個注冊碼存放到軟件的特定位置處,當應用程序被他人拷貝到其它機器中去后,由于注冊碼因不同機器而異,所以應用程序的功能或使用次數(shù)仍然受限,要在其它機器中使用該應用程序,還必須進行重新注冊,達到共享軟件發(fā)布目的。同時由于注冊源數(shù)據(jù)的算法和注冊碼算法均可因人而異,無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 因此這種方法非??煽俊W詸C帶參數(shù)時接受 鍵 盤輸入注冊源;不帶任何參數(shù)時從本地機器內(nèi)直接采集注冊源數(shù)據(jù)。 三、注冊碼 當用戶注冊成功后,注冊碼就被寫到共享軟件的相應位置。這時共享軟件必須對用戶注冊碼進行實時檢測與判斷,才能實現(xiàn)注冊限制功能。這時要求共享軟件必須內(nèi)部取得注冊源數(shù)據(jù),并利用注冊機中相同的算法產(chǎn)生內(nèi)部注冊碼。這就要求共享軟件直接讀取 ROM BIOS 的注冊源信息,并在共享軟件中需要限制的功能處增加注冊碼檢測判斷功能,這需要根據(jù)共享軟件的實際需要、軟件大小和實現(xiàn)的難易程度來確定限制的數(shù)量,使盜版者很難進行解密。這樣既使計算機中多個共享軟件使用相同的注冊源,也不會發(fā)生注冊沖突問題;既使是使用了相同的注冊源數(shù)據(jù),由于注冊算法的不同注冊碼也不會相同;即使解密者知道注冊算法的注冊源地址,由于無法知道注冊算法而且注冊點遍布整個共享軟件,也很難進行盜版。因此,這一注冊方法使共享軟件有效地跨越各種系統(tǒng)平臺。要在共享軟件內(nèi)部產(chǎn)生注冊碼,必須在共享軟件中讀取 ROMBIOS 數(shù)據(jù)源內(nèi)存數(shù)據(jù)。 WINDOWS 保護模式下必須利用段選擇符方 法和 API 編程接口提供的函數(shù)才能實現(xiàn): 1.AllocSelector(Selector) 分配一個與參數(shù)相同的空選擇器 2.FreeSelector(Selector) 釋放分配的選擇器 3.SetSelectorBase() 設置選擇器描述符物理起始地址 4.GetSelectorBase() 獲取選擇器描述符物理起始地址 5.SetSelectorLimit() 設置選擇器描述符訪問界限 6.GetSelectorLimit() 獲取選擇器描述符訪問界限 其中函數(shù) AllocSelector(Selector) 是保護模式下物理內(nèi)存訪問的關(guān)鍵, Selector 是分配空選擇器的段寄存器模板,可以利用 Global Alloc()函數(shù)分配內(nèi)存,再利用GlobalHandleToSel() 函數(shù)將內(nèi)存句柄轉(zhuǎn)換為相應選擇器,內(nèi)存單元訪問結(jié)束后再利用GlobalFree() 釋放分配的內(nèi)存。最簡單的方法就是將系統(tǒng)的數(shù)據(jù)段寄存器 _DS 直接作為模 板參數(shù),這個參數(shù)在一般應用程序中完全可以正常使用。然后利用 Se tSelectorBase() 和SetSelectorLimit( ) 函數(shù)分別設置內(nèi)存的物理起始地址和訪問界限值,利用正常的指針操作 *pt=Value 和 Value=*pt 訪問物理內(nèi)存單元,訪問結(jié)束后必須使用 FreeSelector() 函數(shù)釋放分配的選擇器,因為 WINDOWS 并不自動釋放無用的選擇器,而且系統(tǒng)的選擇器共享資源無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 是非常有限,只有 8192 個供使用。根據(jù)以上原理及注冊機中的注冊源和注冊碼算法,就不難實現(xiàn)共享軟件內(nèi)部注冊碼函數(shù): 四、注冊點 共享軟件內(nèi)部注冊碼產(chǎn)生后,需要對抗盜版的注冊 點的多少取決于共享軟件的自身價值、開發(fā)者的加密深度和軟件實現(xiàn)的復雜程度等諸多因素,同時這也決定了注冊提示信息的顯示頻度,來套磁用戶進行合法使用。但就筆者自身而言,至少應該將共享軟件中實現(xiàn)難度較大、深受用戶歡迎以及普遍使用的功能加上注冊點。建議不同平臺之間的注冊碼要分別設計注冊算法和注冊碼。其代碼示例如下: 注冊點一: if(lpImeL- UseNum =0x3f80) if(ImeCmpKey()=0) sImeG.ZcFlag=TRUE; else sImeG.ZcFlag=FALSE; lpImeL- UseNum=0x0; else lpImeL- UseNum+=sImeG.iWord; 注冊點二: if(ImeCmpKey()=0) sImeG.ZcFlag=TRUE; return; else sImeG.ZcFlag=FALSE; lpImeL- UseNum=0x0; 五、注冊口 對于共享軟件,不管其實現(xiàn)何種功能,最好采取再線注冊方式,這樣可以減少用戶很多重復操作。同時應該采取多個注冊入 口,如本人軟件可以在增加或刪除詞組等時進行注無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 冊,只要一處注冊成功整個軟件就算注冊成功,并注意對注冊口輸入的注冊碼進行再加密處理。 結(jié)合以上的思路, 用 Delphi編寫 共享 軟件提取注冊碼及算出注冊碼 的小程序 ,給程序加入 注冊 功能 ,讓它變成一個 共享軟件 ,然后把它放入主頁 ,可 提供給用戶 免費下載 ,從而幫助您獲得更大的用戶群。生成軟件登錄碼生成一個穩(wěn)定的且相對唯一的軟件登錄碼 ,是 共享軟件 賴以生存的基礎 ,所以必須選擇一個好的算法來生成軟件登錄碼。 穩(wěn)定的涵義是指生成的軟件登錄碼僅與機器的某些固定配置有關(guān) ,不會因用戶的一些日常操作而改變。為敘述方便 ,本文僅采用了 C 盤總?cè)萘俊?Windows安裝時所輸入的用戶名、用戶使用本軟件時所提供的單位全稱和用戶姓名等信息 ,根據(jù)需要 ,還可加入硬盤物理參數(shù)、主板的標識等等。 以下生成軟件登錄碼的代碼 ,應放置于軟件登錄窗口的 生成登錄碼 按鈕的OnClick事件代碼中。 procedure TRegBox.BitBtn1Click(Sender: TObject); var users:pchar; i:integer; n1:longint; /n2:longint,s0,s1,s2,s3:string 定義為全程變量 begin i:=255; getmem(users,255); /分配內(nèi)存空間 getusername(users,i); /獲得 Windows用戶名 s1:=trim(Edit1.Text); /用戶輸入的單位全稱 s2:=trim(Edit2.Text); /用戶輸入的用戶姓名 s0:=jdk +users +ue28; /避免用戶名太短 freemem(users); /釋放內(nèi)存空間 s1:=s2 +xwplskf +s1 +ruieo; /合成單位全稱和用戶姓名 n1 := DiskSize(3) div 1024 ; /C 盤總?cè)萘?n2 :=1 ; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: for i:=1 to length(s1) do /登錄碼與 s1相關(guān)聯(lián) n2:=abs(ord(s1i) n2 + f77) mod 1000000; for i:=2 to length(s0) do /登錄碼與 s0和 C盤容量相關(guān)聯(lián) n2:=abs(ord(s0i) n2 +n1) mod 1000000; /下面的轉(zhuǎn)換生成 8位數(shù)字的登錄碼 n2 n2:=10504007 +abs(n2 +n1) (length(s1) +length(s0); Edit4.text:=copy(inttostr(n2),1,8); n2:=strtoint(copy(inttostr(n2),1,8); end; 生成 注冊 密碼 有了登錄碼 ,還需要一個單獨的程序 ,采取一定的算法來加密登錄碼 ,生成一個 注冊密碼 ,加密算法的強度越大越好。這個單獨的程序即為電子 注冊 密碼生成程序 ,當然它不能提供給任何用戶 ,但需要在提供給用戶使用的 共享軟件 中 注冊 按鈕的 OnClick事件中 ,寫入等價的代碼 ,以判斷用戶自己輸入的 注冊 密碼是否正確。 procedure Tencodeform.Button1Click(Sender:TObject); var n2:longint; s1,s2,s4:string; i:integer; begin n2:=strtoint(Edit1.text); / 用戶反饋的軟件登錄碼 n2:=120873762 +abs(n2 div 133) 171 xor 39639421); s1:=copy(inttostr(n2),1,8); s2:=73461852; s4:=; /s4 : 由 n2 變換生成的 注冊 密碼 for i:=1 to 8 do s4:=s4 +s1ord(s2i) ord(1) +1 ; / 在 Edit2 編輯框顯示生成的 注冊 密碼 , 將它告訴申請的用戶 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Edit2.text:=s4; end; 注冊 用戶通過單擊 注冊 按鈕 ,來實現(xiàn)軟件的 注冊, 這一段代碼要完成以下功能 : 程序自動生成的 注冊 密碼 ; 用生成的 注冊 密碼與用戶輸入的 注冊 密碼進行核對 ; 如果一致 ,則關(guān)閉 注冊 菜單項 ,并在缺省目 錄下創(chuàng)建一個 注冊 文件 ,這個文件包括以下內(nèi)容 : USER 單位全稱、用戶姓名、電話號碼、 CODE 注冊 碼 =XXXXXXXX 注冊 按鈕的 OnClick 事件代碼如下 : procedure TRegBox.BitBtn2Click(Sender: TObject); var myfile:textfile; i:integer; begin s5:=trim(Edit5.text); /s5=用戶輸入 注冊 密碼 /以下代碼對 n2 進行變換生成 注 冊 密碼 n2:=120873762 +abs(n2 div 133) 171 xor 39639421); s1:=copy(inttostr(n2),1,8); /8 位數(shù)字 s2:=73461852; /移位變換 s4:=; /s4=程序自動生成的 注冊密碼 for i:=1 to 8 do s4:=s4 +s1ord(s2i) ord(1) +1 ; if strtoint(s4) 7strtoint(s5) 7 then begin MainBox.r2.Visible:=True; /打開 注冊 菜單 Edit4.Text:=; /清空登錄碼 Edit5.Text:=; /清空 注冊 密碼 MessageDlg(注冊 碼不對 ,請核對后再 注冊 ! , mtWarning, mbOk, 0) 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: end else begin /注冊 成功后 ,創(chuàng)建一個 注冊 文件 MainBox.r2.Visible:=False; assignfile(myfile,wps2word.log); rewrite(myfile); writeln(myfile,ERIS); writeln(myfile,單位全稱 =,trim(Edit1.Text); writeln(myfile,用戶姓名 =,trim(Edit2.Text); writeln(myfile,電話號碼 =,trim(Edit3.Text); writeln(myfile,CODE); writeln(myfile,注冊 碼 =,s4); closefile(myfile); MessageDlg (注冊 碼成功 ,謝謝您使用本軟件! , mtWarning, mbOk, 0) end; end; 判斷軟件是否 注冊 判斷軟件是否 注冊 的代碼應放在應用程序主窗口的 OnCreate事件中 ,在這一段代碼中 ,主要完成以下功能 : 判斷軟件 注冊 文件是否存在及是否符合規(guī)范 (可能被用戶誤修改 ); 從 注冊 文件中讀取 注冊 密碼及程序自動生 成 注冊 密碼所需要的信息 ; 如果兩者一致 ,則置 注冊 成功標志 ,關(guān)閉主菜單中的 注冊 菜單項 ,否則 ,打開 注冊 菜單項。 procedure TMainBox.FormCreate(Sender: TObject); var s0,s1,s2,s3:string; /s4,s5:string 為全程變量 n1,n2:longint; myfile:textfile; users:pchar; i:integer; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: begin if not fileexists(wps2word.log) then begin /不存在 注冊 文件 ,則沒有 注冊 r2.Visible:=True; /允許 注冊 菜單項 Randomize; /初始化隨機數(shù)序列 n1:=random(100000000); /產(chǎn)生一個 8位以內(nèi)的整數(shù) s4:=inttostr(n1); /假設輸入的 注冊 密碼為 s4 s5:=inttostr(n1 +7) /假設程序生成的 注冊 密碼為 s5,令 s4s5 end else begin /存在 注冊 文件的處理 assignfile(myfile,wps2word.log); reset(myfile); /讀取用戶 注冊 信息及 注冊 密碼 if not eof(myfile) then readln(myfile,s0); if not eof(myfile) then readln(myfile,s1); if not eof(myfile) then readln(myfile,s2); if not eof(myfile) then readln(myfile,s3); if not eof(myfile) then readln(myfile,s4); if not eof(myfile) then readln(myfile,s5); closefile(myfile); if (length(s1) 10) or (length(s2) 10) or (length(s3) 10) or (length(s5) 15) then begin /文件格式有誤 ,則刪除 注冊 文件 ,并退出 deletefile(wps2word.log); r2.Visible:=True; /允許 注冊 菜單 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Exit; /退出 end; i:=255; getmem(users,255); getusername(users,i); /獲得 Windows用戶名 s0:=jdk +users +ue28; /避免用戶名太短 freemem(users); s1:=trim(copy(s1,10,length(s1) 9); /單位全稱 s2:=trim(copy(s2,10,length(s2) 9); /用戶姓名 s5:=trim(copy(s5,8,length(s5) 7); /注冊 密碼 (待核對 ) s1:=s2 + xwplskf +s1 +ruieo; /合成單位全稱和用戶姓名 n1 := DiskSize(3) div 1024 ; /C 盤 信息 n2 :=1 ; for i:=1 to length(s1) do n2:=abs(ord(s1i) n2 + f77) mod 1000000; for i:=2 to length(s0) do n2:=abs(ord(s0i) n2 +n1) mod 1000000; n2:=10504007 +abs(n2 +n1) (length(s1) +length(s0); n2:=strtoint(copy(inttostr(n2),1,8); /登錄碼 /以下部分生成 注冊 密碼 n2:=120873762 +abs(n2 div 133) 171 xor 39639421); s1:=copy(inttostr(n2),1,8); s2:=73461852; /移位變換 s4:=; /S4為程序自動生成的 注冊 密碼 for i:=1 to 8 do s4:=s4 +s1ord(s2i) ord(1) +1 ; 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: /核對 注冊 文件和自動生成的 注冊 密碼是否致 if strtoint(s4) 7=strtoint(s5) 7 then r2.Visible:=False /一致 else begin / 不一致 deletefile(wps2word.log); /刪除 注冊 文件 r2.Visible:=True; /允許 注冊 菜單項 end; end; end; 開放和限制部分功能方法 采取核對程序自動生成和用戶輸入的 注冊 密碼是否一致 ,并檢查 注冊 菜單項是否允許的方 式 ,在應用程序的功能代碼中判斷是否已經(jīng) 注冊 ,以控制程序的流向。 if(r2.Visible=True)or(strtoint(s4) 7strtoint(s5) 7)and( 其他條件 )then 未 注冊 時的處理 else 成功 注冊 時的處理。 至此 ,本文僅討論了限制軟件使用功能的 共享軟件 的編寫方法 ,如果想限制軟件使用時間 ,在軟件 注冊 標志中還應包括第一次安裝的時間 ,并且 注冊 標志不能簡單地寫入一個文件 ,它應隱藏在硬盤或 注冊 表的某一特定位置 。 關(guān)于硬盤序列號: 在微軟的操作系統(tǒng)中,硬盤的磁盤序列號是在硬盤分區(qū)后系統(tǒng)產(chǎn)生的 8 字節(jié)隨機數(shù)字,理論上有重復的可能 ,但實際上找到兩個相同的分區(qū)序列號很難,因此,在實際應用中可以把硬盤序列號作為唯一識別碼用于我們的加密系統(tǒng),實際應用中可以對序列號做幾次邏輯運算,讓別人覺得不是磁盤序列號。注意,軟盤也有磁盤序列號,是在格式化后產(chǎn)生的,當進行磁盤復制時,兩個磁盤的序列號也被復制為一樣的。因此,不能利用軟盤的序列號進行加密。當然,硬盤也可以用 GHOST 等軟件克隆,但是為了使用某個軟件而去克隆整個硬盤的情況是極少發(fā)生的。注冊時,調(diào)用 CreateLock()得到機器的識別號(密碼鎖) ,在應用程序中無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 顯示給用戶 , 用戶得到該序列號后通知軟件作者 (作者一定得留下聯(lián)系方法 ),作者根據(jù)密碼鎖利用解密機得到密匙 ,通過網(wǎng)絡或電話送給用戶,用戶根據(jù)密匙注冊,注冊后應用程序把密匙寫進 Windows 注冊表,以備 TestKey( x)函數(shù)檢測密匙用。 - 以后應用程序每次運行都要調(diào)用 TestKey(x)函數(shù) (其中 x=密匙 ),用于檢測密匙是否正確 ,正確返回非零值(合法用戶) ,程序繼續(xù)運行 ,否則(非法用戶)退出程序。當輸入正確的密匙 ,將顯示 ”合法用戶 ”,否則顯 示 ”非法用戶 ”,并退出程序 . 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第七章、功能設計 調(diào)試環(huán)境的配置說明 安裝組件: component-install component 在 install component 窗體下按 Browse 按鈕在 RegModule文件夾下選擇 Regware2.pas單元后,按 OK 運行:注冊機的使用 添加 使用者姓名(大于 3個字符)及校驗碼(注冊人姓名可以忽略) 按“生成注冊碼”在注冊碼框內(nèi)會顯示生成的 注冊碼 圖 6-1注冊機實現(xiàn) 流程圖 注冊機實現(xiàn) 按照算法計算 用戶輸入 使用者姓名 生成注冊碼 校驗碼 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 圖 6-2 用戶注冊實現(xiàn)流程圖 在 DELPHI中安裝并注冊 TRegwareII 類 在 HKEY_LOCAL_MACHINESoftwareCLASSESCLSID + FProgGUID + InprocServer32 的 ThreadingModel子鍵數(shù)據(jù)中添加 FLicense := License;/注冊者 FOrganization := Organization;/組織 FRegCode := RegCode;/注冊碼 獲取磁盤序列號 生成校驗碼 用戶端注冊過程 按照算法計算 讀取注冊表數(shù)據(jù) 是否保存注冊數(shù)據(jù) 用戶輸入 未保存 保存 使用者姓名 取得注冊碼 生成注冊碼 比較是否相等 相等 -注冊成功 不相等 -注冊不成功 按照算法計算 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: FExpireTime := ExpireTime;/注冊時間 FRegVersion := RegVersion;/注冊版本號 FLastCountDown := LastCountDown;/使用天數(shù) 注冊碼的計算: DSN=硬盤物理序列號 uesrname=注冊者名稱 reg=(DSN)前 1/2+uesrname+(DSN)后 1/2 然后計算 reg所有字符的和 sum=sum+ (FSeed - 1113 mod Ord(regi);) 將 使用者姓名 及注冊碼添加到要注冊的程序中注冊即可。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 第八章 詳細設計 1 在應用軟件主目錄(假設為 C:Register)下創(chuàng)建兩個子目錄,分別命名為 Login 和Data。 2 從 Delphi 的 Tools 菜單中啟動 Database Desktop,并選擇 Tools/AliasManager .創(chuàng)建一個新別名。方法是:在 Alias Manager 對話框中點 New,給出新別名 UserInfo,并指向C:RegisterData 目錄,按 Keep New、 OK 等按鈕 保存新別名。 3 利用 Database Desktop 創(chuàng)建 Paradox 5.0 for Windows 數(shù)據(jù)表 Users.DB,結(jié)構(gòu)見表 1。事實上,對于商業(yè)軟件還需要更多的域。 表 1 表 Users.DB 的結(jié)構(gòu) 域名類型大小關(guān)鍵字說明 Name A 16 * 用戶名 Password A 16 * 注冊口令 Fullname A 32 用戶全名 Group I 用戶組號 Enabled L 注冊允許 4 設定 Name, Group 和 Enabled 為非空域 (Required Field), Group 的最小值為 0,最大值為 3,默認值為 3, Enabled 的默認值為 True。用戶組 0 為系統(tǒng)管理員,可進行幾乎任何操作;用戶組 1 為軟件操作人員,可進行除用戶帳戶管理以外的操作,包括建立和刪除數(shù)據(jù);用戶組 2 為普通用戶,可使用系統(tǒng)資源,無修改權(quán)限,而用戶組 3 僅可瀏覽系統(tǒng)有限信息。 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 5 用口令 UserPassword 保護 Users.DB 表 , 存于 Data 目錄下。利用 Database Desktop 向表中輸入若干樣本用戶(見表 2),然后關(guān)閉 DatabaseDesktop。 表 2 表 Users.DB 的樣本用戶 Name Password Fullname Group Enabled Supervisor AAAAAA Super User 0 True Director BBBBBB Director User 1 True Guest 3 True User1 CCCCCC General User1 1 False User1 DDDDDD General User1 2 True User2 EEEEEE General User2 3 True 表 2 顯示,允 許同一用戶以不同身份(用戶組)登錄進入系統(tǒng),享有不同的權(quán)限。如用戶 User1,以不同密碼登記,分屬用戶組 1 和 2。 6 返回 Delphi IDE,新建項目 Register.dpr 并存入 C:Register 目錄,主窗體單元命名為 Main.pas。用戶注冊成功后,方能啟動主窗體進入系統(tǒng)。本系統(tǒng)僅顯示用戶信息及登錄的日期和時間以表示注冊成功(見圖 5),并不做其它任何事情,這里便是讀者應用系統(tǒng)的接口。為此,在主窗體上放入一個 TGroupBox 組件, TLabel 和 TEdit 組件各五個。將所有 TEdit 的Text 屬性清空, ReadOnly 屬性值設為 True,窗體和組件其余屬性按表 3 設置。 7 創(chuàng)建主窗體的 OnActivate 事件處理程序,登錄成功并激活主窗體時執(zhí)行,顯示用戶信息、登錄日期和時間。過程如下: procedure TMainForm.FormActivate(Sender: TObject); begin if Time =StrToTime(12:00:00) then Caption:= 上午好,您已成功登錄! else 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: Caption:= 下午好,您已 成功登錄! ; / 顯示登錄用戶信息、登錄日期和時間 NameEdit.Text:=LoginUser.UserName; FullNameEdit.Text:=LoginUser.UserFullName; GroupEdit.Text:=IntToStr(LoginUser.UserGroup); DisplayDateEdit.Text:=DateToStr(Date); DisplayTimeEdit.Text:=TimeToStr(Time); end; 表 3 主窗體中組件屬性設置 組件屬性設 置 Form1 Caption Name MainForm Position poScreenCenter GroupBox1 Caption 用戶信息 Label1 Caption 用戶名稱: Label2 Caption 用戶全名: Label3 Caption 用戶組號: Label4 Caption 登錄日期: Label5 Caption 登錄時間: Edit1 Name NameEdit Edit2 Name FullnameEdit Edit3 Name GroupEdit Edit4 Name DisplayDateEdit Edit5 Name DisplayTimeEdit 8 數(shù)據(jù)模板。選擇 File/New Data Module 建立數(shù)據(jù)模板 LogDataModule,放入一個Ttable 組件,如圖 1。屬性按表 4 設置,命名其單元為 MD.pas,存入 Login 目錄。 表 4 數(shù)據(jù)模板中組件屬性設置 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 組件屬性設置 Table1 DatabaseName UserInfo Name UsersTable TableName Users.DB 9 創(chuàng)建注冊窗體。選擇 File/New Form 創(chuàng)建一個新窗體,并加入組件 TLabel、 TEdit 和TbitBtn 各兩個。窗體和組件屬性按表 5 設置,命名其單元為 Login.pas,存于 Login 目錄。 表 5 注冊窗體中組件屬性設置 組件屬性設置 Form2 ActiveControl UserNameEdit Caption 請注冊 Name LoginDialogForm Position poScreenCenter Label1 Caption 用戶: Label2 Caption 密碼: Edit1 Name LoginNameEdit Text Edit2 Name PasswordEdit PasswordChar * Text BitBtn1 Caption 注冊 (&L) Enabled False Kind bkOK Name LoginBitBtn BitBtn2 Caption 取消 (&C) Enabled True Kind bkCancel Name CancelBitBtn 無憂無慮畢設網(wǎng) ():畢業(yè)設計源碼下載 畢業(yè)設計源碼下載: 10 選擇 File/New 命令,從 New Items 的 New 頁中選擇 Unit 項建一個無窗體單元Addition.pas 存入 Login 目錄,在其 interface 段輸入下列語句: uses Classes, Forms, Sysutils; type TApplicationUser=class(TComponent) private FUserName: string; FFullName: string; FUserGroup: Integer; public property UserName: string read FUserName write FUserName; property UserFullName: string read FFullName write FFullName; property UserGroup: Integer read FUserGroup write FUserGroup; e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程招標代理合同2026年合同履行監(jiān)督協(xié)議
- 旅游酒店合作經(jīng)營合同2026年
- 2026年商場LED屏幕安裝合同協(xié)議書
- 2026年車輛保養(yǎng)服務合同
- 家校聯(lián)動安全培訓課件
- 未來汽車安全培訓課件
- 培訓部總結(jié)匯報
- 園區(qū)物業(yè)安全培訓內(nèi)容課件
- 化妝品安全生產(chǎn)培訓計劃課件
- 爭當小實驗家培訓課件
- 幼兒園班級幼兒圖書目錄清單(大中小班)
- 信息安全等級保護制度-信息分類分級管理制度
- 0.4kV配網(wǎng)不停電作業(yè)用工器具技術(shù)條件V11
- SN-T2632-2010微生物菌種常規(guī)保藏技術(shù)規(guī)范
- 個人發(fā)票委托書
- 貴州省黔東南州2022-2023學年八年級上學期期末文化水平測試數(shù)學試卷(含答案)
- 青島啤酒博物館調(diào)查報告
- 新教材2024版高中地理本冊整合提升課件新人教版必修第一冊
- 資產(chǎn)評估學教程(第八版)習題及答案 喬志敏
- 2023年10月自考05678金融法試題及答案含評分標準
- 城鎮(zhèn)道路工程施工與質(zhì)量驗收規(guī)范CJJ解析及質(zhì)量控制點
評論
0/150
提交評論