




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