分組密碼加密(共18頁)_第1頁
分組密碼加密(共18頁)_第2頁
分組密碼加密(共18頁)_第3頁
分組密碼加密(共18頁)_第4頁
分組密碼加密(共18頁)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實習(shx)二 分組密碼加密一、實習(shx)目的1理解(lji)對稱加密算法的原理,熟悉常用的對稱加密算法:DES、TripleDES、Blowfish;2以DES加密算法為例,掌握分組加密算法加、解密過程的實現(xiàn)。二、實習要求1實習前認真預習第5章有關(guān)內(nèi)容;2熟悉java中的java.security.*和java.crypto.*中的相關(guān)類;3按要求認真撰寫實習報告。三、實習內(nèi)容1基本要求以DES/DESede為例,利用java中的相關(guān)類實現(xiàn)對指定字符串的加、解密。2實現(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ù)為字符串類型,指定加密算法的名稱。實驗截圖:以DES加密為例,客戶端:客戶端解密(ji m):實習(shx)代碼:服務器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(服務器端);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(服務器地址(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論