ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:37.85KB ,
资源ID:3850516      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3850516.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分组密码加密.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

分组密码加密.docx

1、分组密码加密实习二 分组密码加密一、实习目的1理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish;2以DES加密算法为例,掌握分组加密算法加、解密过程的实现。二、实习要求1实习前认真预习第5章有关内容;2熟悉java中的java.security.*和java.crypto.*中的相关类;3按要求认真撰写实习报告。三、实习内容1基本要求以DES/DESede为例,利用java中的相关类实现对指定字符串的加、解密。2实现提示(1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator的静态方法getInstanc

2、e()获得KeyGenerator()类对象;(2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等;(3) 利用工厂类Cipher的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。实验截图:以DES加密为例,客户端:客户端解密:实习代码:服务器MyServer类:package Caesar_Modification;import java.awt.EventQueue;import java.awt.TextArea;import javax.c

3、rypto.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 java.awt.event.Actio

4、nListener;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 java.security.Key;impo

5、rt 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 TextArea SDea

6、lWith_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 initialize() thro

7、ws 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(); SDeal

8、With_After.setBounds(227, 103, 150, 115); frame.getContentPane().add(SDealWith_After); JLabel lblNewLabel = new JLabel(接收到的秘钥); lblNewLabel.setBounds(227, 10, 93, 15); frame.getContentPane().add(lblNewLabel); JLabel label_1 = new JLabel(处理后); label_1.setBounds(227, 78, 54, 15); frame.getContentPane(

9、).add(label_1); JButton button_1 = new JButton(清除); 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 Pri_KeyS

10、 = 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(开启秘钥通道); btnNewButton_1.a

11、ddActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try server_key = new ServerSocket(5679); you_key = server_key.accept(); Pri_KeyS.setText(秘钥已传送。); catch (IOException e1) e1.printStackTrace(); ); btnNewButton_1.setBounds(10, 6, 150, 23); frame.getContentPane().add(btnN

12、ewButton_1); JButton btnNewButton = new JButton(解密); 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 k1 = (Ke

13、y)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(); BA

14、SE64Decoder 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)

15、/ TODO Auto-generated catch block e1.printStackTrace(); catch (NoSuchPaddingException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (InvalidKeyException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (IllegalBlockSizeException e1) / TODO Auto-generated catch bl

16、ock e1.printStackTrace(); catch (BadPaddingException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (ClassNotFoundException e1) / TODO Auto-generated catch block e1.printStackTrace(); try you_text.close(); server_text.close(); server_key.close(); you_key.close(); catch (IOExceptio

17、n e1) e1.printStackTrace(); ); btnNewButton.setBounds(111, 228, 93, 23); frame.getContentPane().add(btnNewButton); JButton btnNewButton_2 = new JButton(开启密文通道); btnNewButton_2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try server_text = new ServerSocket(5678);

18、you_text = server_text.accept(); catch (IOException e1) e1.printStackTrace(); ); btnNewButton_2.setBounds(10, 39, 150, 23); frame.getContentPane().add(btnNewButton_2); JLabel lbldes = new JLabel(通过DES加密后); lbldes.setBounds(20, 74, 93, 23); frame.getContentPane().add(lbldes); 客户端MyClient类:package Cae

19、sar_Modification;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.swin

20、g.JFrame;import 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.OutputS

21、tream;import java.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; priva

22、te static TextArea 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

23、(); ); public MyClient() 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); JLabe

24、l lblNewLabel = new JLabel(明文); 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(加密); b

25、tnNewButton_1.addActionListener(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_b

26、efore = CDealWith_Before.getText(); Cipher cp = Cipher.getInstance(DES); /初始化Cipher对象 cp.init(Cipher.ENCRYPT_MODE, secretkey); byte ptext = str_before.getBytes(UTF8);/指定UTF8字符集,可以跨平台 byte ctext; try ctext = cp.doFinal(ptext); BASE64Encoder base64encoder = new BASE64Encoder(); pw.write(base64encoder.

27、encode(ctext); pw.close(); catch (IllegalBlockSizeException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (BadPaddingException e1) / TODO Auto-generated catch block e1.printStackTrace(); /加密序列化 mySocket_text.close(); catch (UnknownHostException e1) e1.printStackTrace(); catch (IO

28、Exception e1) e1.printStackTrace(); catch (NoSuchAlgorithmException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (NoSuchPaddingException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (InvalidKeyException e1) / TODO Auto-generated catch block e1.printStackTrace(); catch (Exception e2)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1