java文件加密課程設(shè)計_第1頁
java文件加密課程設(shè)計_第2頁
java文件加密課程設(shè)計_第3頁
java文件加密課程設(shè)計_第4頁
java文件加密課程設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 結(jié)業(yè)報告 課程名稱: 網(wǎng)絡(luò)安全技術(shù) 設(shè)計題目: java實現(xiàn)文件加密 系 別: *學(xué)院 專 業(yè): * 組 員: * 起止日期* 指導(dǎo)教師: * 摘要目前世界范圍內(nèi)的信息安全問題越來越嚴(yán)重。解決信息安全問題涉及面很廣,它包括技術(shù),管理制度,人員和法律等諸多方面,但最核心部分是密碼技術(shù)。密碼技術(shù)是實現(xiàn)一種變換,它使得對大量信息的保護變?yōu)閷ι倭棵荑€的保護。本次結(jié)業(yè)設(shè)計以文件的加密與解密問題為主要研究討論方向。先對加密技術(shù)進行查找資料。然后對加密方法進行概述,而后對3DES加密進行詳細(xì)介紹何分析,并對結(jié)業(yè)設(shè)計成果進行演示,最后附上代碼。由于本次結(jié)業(yè)設(shè)計時間倉促外加能力有限,有諸多不足之處以及可能存在

2、某些為發(fā)現(xiàn)錯誤還請批評指正。感謝之至。關(guān)鍵詞:加密 解密 密鑰 3DESAbstractAt present, the problem of information security is more and more serious in the world. To solve the problem of information security involves a wide range, including technology, management, system, personnel and law, etc., but the most important part is the

3、 password technology. Password technology is to achieve a transformation, which makes the protection of a large number of information into a small number of key protection.The graduation project to document encryption and decryption issues as the main research and discussion. First, the encryption t

4、echnology to find information. Then the encryption method is outlined, and then the 3DES encryption for detailed analysis, and the completion of the design results are demonstrated, and finally attached to the code. Due to the limited capacity of the completion of this graduation project, there are

5、many deficiencies and there may be some to find errors also please criticism. Thanks to.目錄ABSTRACT一背景分析- 1 -二 DES算法- 1 -2.1 DES算法思想- 1 -2.2 DES算法原理- 2 -2.3 兩個密鑰的三重DES- 3 -2.4 Java語言編程實現(xiàn)DES算法- 3 -三調(diào)試結(jié)果與說明- 5 -四課程設(shè)計總結(jié)與體會- 7 -參考文獻- 7 -代碼附錄:- 8 -項目總體分工 項目名稱Java文件實現(xiàn)文件加密項目協(xié)調(diào)人設(shè)計時間指導(dǎo)教師姓 名學(xué) 號專業(yè)班級項目分工資料收集,論文查

6、找姓 名學(xué)號專業(yè)班級項目分工總體協(xié)調(diào)安排,代碼編寫姓 名學(xué) 號專業(yè)班級項目分工整理資料,論文編寫姓 名學(xué) 號專業(yè)班級項目分工程序驗證,測試可行性一背景分析隨著Internet的高速發(fā)展,很多日常工作和數(shù)據(jù)傳輸都放在Internet網(wǎng)上進行,大大提高了效率,降低了成本,創(chuàng)造了良好的效益。但是,由于Internet網(wǎng)絡(luò)協(xié)議本身存在著重要的安全問題(IP包本身并不繼承任何安全特性很容易偽造出IP包的地址、修改其內(nèi)容、重播以前的包以及在傳輸途中攔截并查看包的內(nèi)容),使網(wǎng)上的信息傳輸存在巨大的安全風(fēng)險:很可能傳輸?shù)男畔⒈粍e人截取,造成巨大的損失。針對這些問題,IETF(因特網(wǎng)工程任務(wù)組)發(fā)布了IP層安全

7、標(biāo)準(zhǔn)IPSec(IP Security)其目的是為在Internet上的數(shù)據(jù)傳輸提供具有較強的互操作能力、高質(zhì)量和基于密碼的安全實現(xiàn)方法。IPSec提供了一種標(biāo)準(zhǔn)的、完善的以及包容廣泛的機制,可用它為IP及上層協(xié)議(如UDP和TCP)提供安全保證。IPSec可保證主機之問、網(wǎng)絡(luò)安全網(wǎng)關(guān)(如路由器或防火墻)之間或主機與安全網(wǎng)關(guān)之間的數(shù)據(jù)包的安全。因此,利用IPSec協(xié)議在公用網(wǎng)絡(luò)上通過對傳輸?shù)臄?shù)據(jù)進行加密和驗證,從而達到安全保密的目的,這已經(jīng)成為網(wǎng)絡(luò)安全的一個重要手段。本文主要介紹使用常用的對稱算法數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data Encryption Standard)在Java環(huán)境下實現(xiàn)數(shù)據(jù)的加

8、密與解密。二 DES算法2.1 DES算法思想DES(Data Encryption Standard)算法 是1977年 得 到 美 國政府正式許可的一種用56位密鑰來加密64位數(shù)據(jù)的加 密方 法 。DES是一種特殊類型的迭代密碼。簡單說來,DES是采用傳統(tǒng)的替換和移位的方法加密的分組密碼,其算法是對稱的,這樣既可以用于加密也可以用于解密。DES用56位密鑰對64位的明文數(shù)據(jù)塊進行加密,每次加密可以對64位的明文數(shù)據(jù)進行16輪編碼,經(jīng)過一系列替換和移位后,輸出完全不同的64位密紋數(shù)據(jù)。 DES入口參數(shù)有3個:Key、Data、Mode,其中Key為7個字節(jié)共56位(另有8位作為奇偶校驗位,這

9、樣保證了明文與密鑰長度的一致性),是DES算法的工作密鑰;Data為8位字節(jié)64位, 是要被加密或解密的數(shù)據(jù);Mode為DES的工作方式,由兩種:加密、解密。由于DES算法使用64位的標(biāo)準(zhǔn)算法和邏輯運算、運算速度快、密鑰產(chǎn)生容易,因此適合當(dāng)前大多數(shù)計算機上用軟件方法實現(xiàn)。2.2 DES算法原理DES是一種分組加密算法。明文分組長度為64位。加密得到的密文分組長度為64位。密鑰長度64位,8個字節(jié)。每一個字節(jié)的最高位用于奇偶效驗,所以有效密鑰長度為56位。其分組加密過程描述如下:子密鑰Ki的生成。64位的明文經(jīng)過一個初始置換IP后,被分成左右兩半部分,每個部分32位,以L0和R0表示。進行16輪

10、迭代變換:第i 輪變換將上一輪變換所得到的結(jié)果的右半部分與第i個子密鑰Ki結(jié)合,這個過程稱為f函數(shù)。第i輪變換結(jié)果的左半部分為上一輪變換結(jié)果的右半部分(即:Li=Ri-1),其右半部分為上一輪變換結(jié)果的左半部與上一輪變換結(jié)果的右半部經(jīng)過F函數(shù)處理所的結(jié)果的異或:Ri=Li-1F(Ri-1,Ki)。16輪變換之后左右兩部分再連接起來,經(jīng)過一個初始逆置換IP-1得到密文。 其加密過程如圖1所示。DES的解密算法與加密算法完全相同,只需要將密鑰的應(yīng)用次序與加密時相反應(yīng)用即可。即解密過程是初始置換函IP數(shù)接受長度為64比特的密文輸入, 將16個子密鑰按照K16到K1的順序應(yīng)用與F函數(shù)的16輪迭代運算中

11、, 然后將迭代的結(jié)果經(jīng)由末置換函數(shù)IP-1得到64位的明文輸出。2.3 兩個密鑰的三重DES由于DES密鑰只有56bit,易于遭受窮舉時攻擊。作為一種替代加密方案,Tuchman提出使用兩個密鑰的三重DES加密方法,并在1985年成為美國的一個商用加密標(biāo)準(zhǔn)。該方法使用兩個密鑰,執(zhí)行三次DES算法。加密的過程是加密-解密-加密,解密的過程是解密-加密-解密。采用兩個密鑰進行三重加密的好處有:兩個密鑰合起來有效密鑰長度有112bit,可以滿足商業(yè)應(yīng)用的需要,若采用總長為168bit的三個密鑰,會產(chǎn)生不必要的開銷。加密時采用加密-解密-加密,而不是加密-加密-加密的形式,這樣有效的實現(xiàn)了與現(xiàn)有DES

12、系統(tǒng)的向后兼容問題。因為當(dāng)K1=K2時,三重DES的效果就和原來的DES一樣,有助于逐漸推廣三重DES。三重DES具有足夠的安全性,目前還沒有關(guān)于攻破三重DES的報道。2.4 Java語言編程實現(xiàn)DES算法1、 子密鑰的生成1) PC-1變換。將原密鑰的各位按照PC-1矩陣重新排列,這一過程剔除了奇偶校驗位。PC-1如下:57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 4739 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13

13、 5 28 20 12 42) 將排好的密鑰分成兩部分,前面28位為C0,后面28位為D0。3) 從i=1開始,循環(huán)執(zhí)行16次以下步驟得到16個子密鑰。 對Ci-1和Di-1進行相同位數(shù)的循環(huán)左移,得到Ci和Di左移的位數(shù)為:i取數(shù)值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16移 動 數(shù): 1 1 2 2 2 2 2 2 1 2 2 22 221 連接Ci和Di,按照矩陣PC-2排列選擇合適的位,構(gòu)成子密鑰Ki,該過程將56位壓縮到48位,PC-2如下:14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27

14、20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32 i=i+1,轉(zhuǎn)到 ,直到生成16個全部自密鑰。2、 對64位明文分組加密1) 取得64位明文,不足補齊(補0)2) 對明文各位按照IP矩陣進行排列,矩陣為:58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29

15、21 13 563 55 47 39 31 23 15 73) 將得到的結(jié)果分為左右各32位兩部分,稱為L0, R04) 從i=1開始,循環(huán)執(zhí)行16次下列的加密過程 按照下面矩陣E將32位的Ri-1擴展為48位,所得結(jié)果稱為E( Ri-1),E陣為:32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1 將E( Ri-1)和Ki按位異或 將所得結(jié)果分為8個部分,每個部分6位,形成B1,B8 S盒替代。S盒是

16、8個子矩陣,稱為S1,.S8,替代如下:將Bi的第1位和第6位組成一個數(shù)稱為R,第2、3、4、5位組成一個數(shù)稱為C,用Si中對應(yīng)的(R,C)中的4位數(shù)替換Bi,這樣就將原來的48位替換成32位。 P盒置換 ,按照下面的矩陣重新排列上面的結(jié)果16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 2 3 919 13 30 622 11 4 25 將上一步處理的結(jié)果與Li-1按位異或,得到新的Ri,該過程可以簡單記為:Ri=Li-1F(Ri-1,Ki) i=i+1 轉(zhuǎn)的第一步,直到完成16次循環(huán) 進行IP-1置換,將上面得到的L16R16按照下面

17、的矩陣進行置換:40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25加密過程結(jié)束,解密過程是用K16,K15,.K13、DES 算法的偽代碼表示C0d0=PC1(KEY)FOR I=1 TO 16CI=LSI(CI-1)DI=LSI(DI-1)KI=PC2(CIDI)L0R0=IP(PLAIN BLO

18、CK)FOR I=1 TO 16LI=RI-1RI=LI-1 F(RI-1,KI)CIPHER BLOCK=FP-1(L16R16)4、 算法安全性分析DES算法具有相當(dāng)高的復(fù)雜性,密碼函數(shù)F的非線性性質(zhì)非常好, 起到的“ 擾亂” 效果非常顯著, 并且還遵循了嚴(yán)格雪崩準(zhǔn)則和比特獨立準(zhǔn)則, 這使得要破譯它的開銷要超過可能獲得的利益。再加上其便于理解掌握,經(jīng)濟有效, 因此, 得到了廣泛的應(yīng)用。算法具有極高的安全性, 到目前為止, 除了用窮舉搜索法對算法進行攻擊外, 還沒有發(fā)現(xiàn)更有效的辦法。而56位長的密鑰的窮舉空間為256, 這意味著如果一臺計算機的速度是每一秒種檢測一百萬個密鑰, 則它搜索完全部

19、密鑰就需要將近2300年的時間。而采用三重DES,破譯它就更可想而知了。當(dāng)然, 這并不等于說是不可破解的。而實際上, 隨著硬件技術(shù)和網(wǎng)絡(luò)的發(fā)展, 其破解的可能性越來越大, 而且所需要的時間越來越少。DES算法的有效密鑰長度為56位,因此,在實際應(yīng)用中,我們應(yīng)避開使用第8,16,24,64位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。如果不了解這一點,將不能保證DES加密數(shù)據(jù)的安全性,對運用DES來達到保密作用的系統(tǒng)產(chǎn)生數(shù)據(jù)被破譯的危險,這正是DES算法在應(yīng)用上的誤區(qū),留下了被人攻擊、被人破譯的極大隱患。三調(diào)試結(jié)果與說明 1 運行程序選擇一個明文為本次加密的文件。演示文件為new1.t

20、xt,文件內(nèi)容為:hello DES 選擇文件隨機生成(48位秘鑰)進行加密 2 生成加密文件 new1.txt.tdes打開文件為亂碼,表示為加密成功3解密文件選擇文件(剛才加密的文件new1.txt.tdes)產(chǎn)生秘鑰窗口輸入剛才的秘鑰(48位秘鑰)解密文件輸入對應(yīng)的密鑰314 輸入要保存的文件的名字,獲得對應(yīng)的系統(tǒng)解密成功提示。5 打開對應(yīng)文件,得到對應(yīng)結(jié)果。表示解密成功。 6 錯誤密鑰進行測試解密 四課程設(shè)計總結(jié)與體會本次課程設(shè)計使用了3DES加密算法對文件進行加密,重新對DES加密算法有了一個了解,雖然加密過程是由系統(tǒng)中的 crypto類庫完成的。但是對java的圖形界面也是一個很好

21、的進一步熟悉的過程。在參看相關(guān)文件的時候也對相關(guān)的加密解密不走也有了一個很好地了解。對密碼學(xué)也有了進一步的認(rèn)識。對今后學(xué)習(xí)打下一定基礎(chǔ)。參考文獻1蔡皖東.網(wǎng)絡(luò)與信息安全M.陜西:西北工業(yè)大學(xué)出版社,2004.2數(shù)字時代工作室.個人用網(wǎng)安全與黑客防范技術(shù)M.北京:人民郵電出3董清潭,三重DES加密算法原理與實現(xiàn).電腦知識與技術(shù):學(xué)術(shù)交流,2011,0(4X)4梁雅,劉嵐,基于Java卡DES及3DES算法的實現(xiàn).武漢理工大學(xué)學(xué)報:信息與管理工程版,2006,28(11)代碼附錄:package p_3gai;import java.awt.*; import java.awt.event.*;

22、import javax.swing.*; import java.io.*; import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; public class FileEncrypter extends JFrame public static final int WIDTH = 600; public static final int HEIGHT = 200; public static void main(String args) FileEncrypter fe = new FileEncr

23、ypter(); fe.show(); FileEncrypter() this.setSize(WIDTH,HEIGHT); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension screenSize = tk.getScreenSize(); this.setLocation(screenSize.width - WIDTH)/2, (screenSize.height - HEIGH

24、T)/2); this.setTitle("- java文件加密課程設(shè)計 -"); Container c = this.getContentPane(); c.setLayout( new FlowLayout(); final FilePanel fp = new FilePanel("加/解密文件:"); c.add(fp); final KeyPanel pp = new KeyPanel("產(chǎn)生秘鑰"); c.add(pp); JButton jbE = new JButton("進行加密"); c.ad

25、d(jbE); jbE.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) File file = new File(fp.getFileName(); if (file.exists() encrypt(file.getAbsoluteFile(),pp.getKey(); else JOptionPane.showMessageDialog( null,"請選擇文件!","提示",JOptionPane.OK_OPTION); );

26、 JButton jbD = new JButton("解密文件"); c.add(jbD); jbD.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) File file = new File(fp.getFileName(); if (file.exists() decrypt(file.getAbsoluteFile(),pp.getKey(); else JOptionPane.showMessageDialog( null,"請選擇文

27、件!","提示",JOptionPane.OK_OPTION); ); /* 加密函數(shù) 輸入: 要加密的文件,密碼(由0-F組成,共48個字符,表示3個8位的密碼)如: AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746 其中: AD67EA2F3BE6E5AD DES密碼一 D368DFE03120B5DF DES密碼二 92A8FD8FEC2F0746 DES密碼三 輸出:對輸入的文件加密后,保存到同一文件夾下增加了".tdes"擴展名的文件中。*/ private void encrypt(F

28、ile fileIn,String sKey) try if(sKey.length() = 48) /截取密鑰串為三重加密做準(zhǔn)備byte bytK1 = getKeyByStr(sKey.substring(0,16); byte bytK2 = getKeyByStr(sKey.substring(16,32); byte bytK3 = getKeyByStr(sKey.substring(32,48); FileInputStream fis = new FileInputStream(fileIn); byte bytIn = new byte(int)fileIn.length()

29、; for(int i = 0;i<fileIn.length();i+) bytIni = (byte)fis.read(); /加密文件 byte bytOut = encryptByDES(encryptByDES( encryptByDES(bytIn,bytK1),bytK2),bytK3); /調(diào)用DES加密String fileOut = fileIn.getPath() + ".tdes" FileOutputStream fos = new FileOutputStream(fileOut); for(int i = 0;i<bytOut.le

30、ngth;i+) fos.write(int)bytOuti); fos.close(); JOptionPane.showMessageDialog(this,"恭喜!加密成功!","提示",JOptionPane.OK_OPTION); else JOptionPane.showMessageDialog( this,"秘鑰長度必須等于48!","錯誤信息",JOptionPane.ERROR_MESSAGE); catch(Exception e)e.printStackTrace();/* 解密函數(shù) 輸入:

31、要解密的文件,密碼(由0-F組成,共48個字符,表示3個8位的密碼)如: AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746 其中: AD67EA2F3BE6E5AD DES密碼一 D368DFE03120B5DF DES密碼二 92A8FD8FEC2F0746 DES密碼三 輸出:對輸入的文件解密后,保存到用戶指定的文件中。*/ private void decrypt(File fileIn,String sKey) try if(sKey.length() = 48) String strPath = fileIn.getPath(); if

32、(strPath.substring(strPath.length()-5).toLowerCase().equals(".tdes") strPath = strPath.substring(0,strPath.length()-5); else JOptionPane.showMessageDialog( this,"請?zhí)砑雍戏ǖ募用芪募?quot;,"提示",JOptionPane.OK_OPTION); return; JFileChooser chooser = new JFileChooser(); chooser.setCurr

33、entDirectory(new File("."); chooser.setSelectedFile(new File(strPath); /用戶指定要保存的密文文件 int ret = chooser.showSaveDialog(this); if(ret=JFileChooser.APPROVE_OPTION) byte bytK1 = getKeyByStr(sKey.substring(0,16); byte bytK2 = getKeyByStr(sKey.substring(16,32); byte bytK3 = getKeyByStr(sKey.subs

34、tring(32,48); FileInputStream fis = new FileInputStream(fileIn); byte bytIn = new byte(int)fileIn.length(); for(int i = 0;i<fileIn.length();i+) bytIni = (byte)fis.read(); /解密密文 byte bytOut = decryptByDES(decryptByDES( decryptByDES(bytIn,bytK3),bytK2),bytK1); File fileOut = chooser.getSelectedFile

35、(); fileOut.createNewFile(); FileOutputStream fos = new FileOutputStream(fileOut); for(int i = 0;i<bytOut.length;i+) fos.write(int)bytOuti); fos.close(); JOptionPane.showMessageDialog( this,"恭喜!解密成功!","提示",JOptionPane.OK_OPTION); else JOptionPane.showMessageDialog( this,"

36、秘鑰長度必須等于48!","錯誤信息",JOptionPane.ERROR_MESSAGE); catch(Exception e)JOptionPane.showMessageDialog( this,"解密失敗,請核對秘鑰!","提示",JOptionPane.OK_OPTION); /* 用DES方法加密輸入的字節(jié) bytKey需為8字節(jié)長,是加密的密碼 */ private byte encryptByDES(byte bytP,byte bytKey) throws Exception DESKeySpec des

37、KS = new DESKeySpec(bytKey); SecretKeyFactory skf = SecretKeyFactory.getInstance("DES"); SecretKey sk = skf.generateSecret(desKS); Cipher cip = Cipher.getInstance("DES"); cip.init(Cipher.ENCRYPT_MODE,sk); return cip.doFinal(bytP); /* 用DES方法解密輸入的字節(jié) bytKey需為8字節(jié)長,是解密的密碼 */ private b

38、yte decryptByDES(byte bytE,byte bytKey) throws Exception DESKeySpec desKS = new DESKeySpec(bytKey); SecretKeyFactory skf = SecretKeyFactory.getInstance("DES"); SecretKey sk = skf.generateSecret(desKS); Cipher cip = Cipher.getInstance("DES"); cip.init(Cipher.DECRYPT_MODE,sk); retu

39、rn cip.doFinal(bytE); /* 輸入密碼的字符形式,返回字節(jié)數(shù)組形式。 如輸入字符串:AD67EA2F3BE6E5AD 返回字節(jié)數(shù)組: 173,103,234,47,59,230,229,173 */ private byte getKeyByStr(String str) byte bRet = new bytestr.length()/2; for(int i=0;i<str.length()/2;i+) Integer itg = new Integer(16*getChrInt(str.charAt(2*i) + getChrInt(str.charAt(2*i

40、+1); bReti = itg.byteValue(); return bRet; /* 計算一個16進制字符的10進制值 輸入:0-F */ private int getChrInt(char chr) int iRet=0; if(chr="0".charAt(0) iRet = 0; if(chr="1".charAt(0) iRet = 1; if(chr="2".charAt(0) iRet = 2; if(chr="3".charAt(0) iRet = 3; if(chr="4"

41、;.charAt(0) iRet = 4; if(chr="5".charAt(0) iRet = 5; if(chr="6".charAt(0) iRet = 6; if(chr="7".charAt(0) iRet = 7; if(chr="8".charAt(0) iRet = 8; if(chr="9".charAt(0) iRet = 9; if(chr="A".charAt(0) iRet = 10; if(chr="B".charAt(0)

42、iRet = 11; if(chr="C".charAt(0) iRet = 12; if(chr="D".charAt(0) iRet = 13; if(chr="E".charAt(0) iRet = 14; if(chr="F".charAt(0) iRet = 15; return iRet; /* 文件選擇組件。 */ class FilePanel extends JPanel FilePanel(String str) JLabel label = new JLabel(str); JTextFiel

43、d fileText = new JTextField(35); JButton chooseButton = new JButton("選擇文件"); this.add(label); this.add(fileText); this.add(chooseButton); clickAction ca = new clickAction(this); chooseButton.addActionListener(ca); public String getFileName() JTextField jtf = (JTextField)this.getComponent(1

44、); return jtf.getText(); private class clickAction implements ActionListener clickAction(Component c) cmpt = c; public void actionPerformed(ActionEvent event) JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File("."); int ret = chooser.showOpenDialog(cmpt); if(re

45、t=JFileChooser.APPROVE_OPTION) JPanel jp = (JPanel)cmpt; JTextField jtf = (JTextField)jp.getComponent(1); jtf.setText(chooser.getSelectedFile().getPath(); private Component cmpt; /* 密碼生成組件。 允許實現(xiàn)隨機生成*/ class KeyPanel extends JPanel KeyPanel(String str) JLabel label = new JLabel(str); JTextField fileText = new JTextField(35); JButton chooseButton = new JButton("隨機生成"); this.add(label); this.add(fileText); this.add(chooseButton); clickAction ca = new clickAction(this); chooseButton.addActionListener(ca); /返回生成的密碼(48個字符長度) public S

溫馨提示

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

最新文檔

評論

0/150

提交評論