版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)習(xí)(shx)二 分組密碼加密一、實(shí)習(xí)(shx)目的1理解(lji)對稱加密算法的原理,熟悉常用的對稱加密算法:DES、TripleDES、Blowfish;2以DES加密算法為例,掌握分組加密算法加、解密過程的實(shí)現(xiàn)。二、實(shí)習(xí)要求1實(shí)習(xí)前認(rèn)真預(yù)習(xí)第5章有關(guān)內(nèi)容;2熟悉java中的java.security.*和java.crypto.*中的相關(guān)類;3按要求認(rèn)真撰寫實(shí)習(xí)報(bào)告。三、實(shí)習(xí)內(nèi)容1基本要求以DES/DESede為例,利用java中的相關(guān)類實(shí)現(xiàn)對指定字符串的加、解密。2實(shí)現(xiàn)提示(1) 可以利用java中的KeyGenerator類創(chuàng)建對稱秘鑰,利用工廠類KeyGenerator的靜態(tài)方法g
2、etInstance()獲得KeyGenerator()類對象;(2) 方法getInstance()的參數(shù)為字符串類型,指定加密算法的名稱如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等;(3) 利用工廠類Cipher的對象可以創(chuàng)建密碼器。同樣的,getInstance()的參數(shù)為字符串類型,指定加密算法的名稱。實(shí)驗(yàn)截圖:以DES加密為例,客戶端:客戶端解密(ji m):實(shí)習(xí)(shx)代碼:服務(wù)器MyServer類:package Caesar_Modification;import java.awt.EventQueue;import java.awt.Tex
3、tArea;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.swing.JFrame;import java.awt.Color;import javax.swing.JButton;import javax.swing.JLabel;import sun.misc.BASE64Decoder;import
4、java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.ObjectInputStream;import .ServerSocket;import .Socket;import java.security.InvalidKeyException;import ja
5、va.security.Key;import java.security.NoSuchAlgorithmException;public class MyServer private JFrame frame;private static ServerSocket server_text;private static Socket you_text;private static ServerSocket server_key;private static Socket you_key;private static TextArea SDealWith_Before;private static
6、 TextArea SDealWith_After;public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try MyServer window = new MyServer();window.frame.setVisible(true); catch (Exception e) e.printStackTrace(););public MyServer() throws IOException initialize();private void initiali
7、ze() throws IOException frame = new JFrame();frame.getContentPane().setBackground(Color.LIGHT_GRAY);frame.setTitle(服務(wù)器端);frame.setBounds(100, 100, 450, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);final TextArea SDealWith_After = new TextArea();SDe
8、alWith_After.setBounds(227, 103, 150, 115);frame.getContentPane().add(SDealWith_After);JLabel lblNewLabel = new JLabel(接收(jishu)到的秘鑰);lblNewLabel.setBounds(227, 10, 93, 15);frame.getContentPane().add(lblNewLabel);JLabel label_1 = new JLabel(處理(chl)后);label_1.setBounds(227, 78, 54, 15);frame.getConte
9、ntPane().add(label_1);JButton button_1 = new JButton(清除(qngch);button_1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) SDealWith_After.setText();SDealWith_Before.setText(););button_1.setBounds(269, 228, 93, 23);frame.getContentPane().add(button_1);final TextArea Pr
10、i_KeyS = new TextArea();Pri_KeyS.setBounds(227, 27, 150, 43);frame.getContentPane().add(Pri_KeyS);final TextArea SDealWith_Before = new TextArea();SDealWith_Before.setBounds(10, 103, 156, 115);frame.getContentPane().add(SDealWith_Before);JButton btnNewButton_1 = new JButton(開啟(kiq)秘鑰通道);btnNewButton
11、_1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try server_key = new ServerSocket(5679);you_key = server_key.accept();Pri_KeyS.setText(秘鑰已傳送(chun sn)。); catch (IOException e1) e1.printStackTrace(););btnNewButton_1.setBounds(10, 6, 150, 23);frame.getContentPane().
12、add(btnNewButton_1);JButton btnNewButton = new JButton(解密(ji m);btnNewButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try InputStream in = you_text.getInputStream();InputStream is = you_key.getInputStream();ObjectInputStream b = new ObjectInputStream(is);Key
13、k1 = (Key)b.readObject();b.close();int total_ctext = in.available();bytectext = new bytetotal_ctext;byteptext = new bytetotal_ctext;Cipher cp = Cipher.getInstance(DES);cp.init(Cipher.DECRYPT_MODE, k1);BufferedReader br = new BufferedReader(new InputStreamReader(in);String cstring = br.readLine();BAS
14、E64Decoder base64decoder = new BASE64Decoder(); ctext = base64decoder.decodeBuffer(cstring);ptext = cp.doFinal(ctext);String p = new String(ptext,UTF8);SDealWith_Before.setText(cstring);SDealWith_After.setText(p); catch (IOException e2) e2.printStackTrace(); catch (NoSuchAlgorithmException e1) / TOD
15、O Auto-generated catch blocke1.printStackTrace(); catch (NoSuchPaddingException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (InvalidKeyException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (IllegalBlockSizeException e1) / TODO Auto-generated catch blocke1.pr
16、intStackTrace(); catch (BadPaddingException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (ClassNotFoundException e1) / TODO Auto-generated catch blocke1.printStackTrace();try you_text.close();server_text.close();server_key.close();you_key.close(); catch (IOException e1) e1.printS
17、tackTrace(););btnNewButton.setBounds(111, 228, 93, 23);frame.getContentPane().add(btnNewButton);JButton btnNewButton_2 = new JButton(開啟密文(m wn)通道);btnNewButton_2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try server_text = new ServerSocket(5678);you_text = serv
18、er_text.accept(); catch (IOException e1) e1.printStackTrace(););btnNewButton_2.setBounds(10, 39, 150, 23);frame.getContentPane().add(btnNewButton_2);JLabel lbldes = new JLabel(通過(tnggu)DES加密后);lbldes.setBounds(20, 74, 93, 23);frame.getContentPane().add(lbldes);客戶端MyClient類:package Caesar_Modificatio
19、n;import java.awt.EventQueue;import java.awt.TextArea;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import java.security.Key;import javax.swing.JFrame;import
20、 javax.swing.JTextField;import javax.swing.JLabel;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;import java.io.OutputStream;import ja
21、va.io.PrintWriter;import .Socket;import .UnknownHostException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.swing.JTextArea;import sun.misc.BASE64Encoder;public class MyClient private JFrame frame;private JTextField Login_C;private static TextAre
22、a CDealWith_Before;private static TextArea Pri_KeyC;private static Key secretkey; public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try MyClient window = new MyClient();window.frame.setVisible(true); catch (Exception e) e.printStackTrace(););public MyClient
23、() initialize();private void initialize() frame = new JFrame();frame.getContentPane().setBackground(Color.LIGHT_GRAY);frame.setTitle(客戶端);frame.setBounds(100, 100, 450, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null); JLabel lblNewLabel = new JLabel(明
24、文(mngwn);lblNewLabel.setBounds(169, 18, 112, 33);frame.getContentPane().add(lblNewLabel);final TextArea CDealWith_Before = new TextArea();CDealWith_Before.setBounds(169, 61, 242, 143);frame.getContentPane().add(CDealWith_Before);JButton btnNewButton_1 = new JButton(加密(ji m);btnNewButton_1.addActionL
25、istener(new ActionListener() public void actionPerformed(ActionEvent e) Socket mySocket_text;String str_before = ;try mySocket_text = new Socket(Login_C.getText(),5678);OutputStream os= null;os = mySocket_text.getOutputStream();PrintWriter pw = new PrintWriter(os);str_before = CDealWith_Before.getTe
26、xt();Cipher cp = Cipher.getInstance(DES);/初始化Cipher對象(duxing)cp.init(Cipher.ENCRYPT_MODE, secretkey);byte ptext = str_before.getBytes(UTF8);/指定(zhdng)UTF8字符集,可以跨平臺byte ctext;try ctext = cp.doFinal(ptext);BASE64Encoder base64encoder = new BASE64Encoder();pw.write(base64encoder.encode(ctext);pw.close(
27、); catch (IllegalBlockSizeException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (BadPaddingException e1) / TODO Auto-generated catch blocke1.printStackTrace();/加密序列化mySocket_text.close();catch (UnknownHostException e1) e1.printStackTrace(); catch (IOException e1) e1.printStackTr
28、ace(); catch (NoSuchAlgorithmException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (NoSuchPaddingException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (InvalidKeyException e1) / TODO Auto-generated catch blocke1.printStackTrace(); catch (Exception e2) / TODO
29、 Auto-generated catch blocke2.printStackTrace(););btnNewButton_1.setBounds(169, 228, 93, 23);frame.getContentPane().add(btnNewButton_1);Login_C = new JTextField();Login_C.setBounds(23, 82, 93, 22);frame.getContentPane().add(Login_C);Login_C.setColumns(10);JButton button = new JButton(清除(qngch);butto
30、n.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) CDealWith_Before.setText();Pri_KeyC.setText(););button.setBounds(305, 228, 93, 23);frame.getContentPane().add(button);JLabel Login_name = new JLabel(服務(wù)器地址(dzh);Login_name.setBounds(23, 57, 93, 15);frame.getContentPane().add(Login_name);JButton button_1 = new JButton(發(fā)送(f sn)秘鑰);button_1.addActionListener(new A
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古希臘藝術(shù)課件
- 2024年遼寧城市建設(shè)職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試題附答案解析
- 2024年織金縣招教考試備考題庫帶答案解析
- 吾國萬疆課件
- 2025年商水縣幼兒園教師招教考試備考題庫及答案解析(奪冠)
- 2025年鄭州軌道工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案解析
- 2025年廣西經(jīng)濟(jì)職業(yè)學(xué)院單招職業(yè)傾向性考試題庫附答案解析
- 2025年朔州師范高等??茖W(xué)校單招職業(yè)技能考試模擬測試卷附答案解析
- 2025年河南省駐馬店地區(qū)單招職業(yè)適應(yīng)性測試題庫附答案解析
- 2025年雷山縣招教考試備考題庫帶答案解析
- 建筑施工機(jī)械使用安全手冊
- GB/T 22200.6-2025低壓電器可靠性第6部分:接觸器式繼電器可靠性試驗(yàn)方法
- 口腔感控培訓(xùn)教育制度
- 2026四川成都錦江投資發(fā)展集團(tuán)有限責(zé)任公司招聘18人筆試備考試題及答案解析
- 英語培訓(xùn)班工資制度
- 房地產(chǎn) -2025年重慶商業(yè)及物流地產(chǎn)市場回顧與展望2025年重慶商業(yè)及物流地產(chǎn)市場回顧與展望
- 2025年湖南邵陽經(jīng)開貿(mào)易投資有限公司招聘12人參考試題附答案解析
- 試用期員工轉(zhuǎn)正申請書(匯編15篇)
- 上海用工勞動合同范例
- DB22-T5026-2019雙靜壓管樁技術(shù)標(biāo)準(zhǔn)
- 中藥熱奄包在消化系統(tǒng)疾病中的應(yīng)用探討
評論
0/150
提交評論