分组密码加密

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实习二分组密码加密

一、实习目的

1.理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish;

2.以DES加密算法为例,掌握分组加密算法加、解密过程的实现。

二、实习要求

1.实习前认真预习第5章有关内容;

2.熟悉java中的java.security.*和java.crypto.*中的相关类;

3.按要求认真撰写实习报告。

三、实习内容

1.[基本要求]

以DES/DESede为例,利用java中的相关类实现对指定字符串的加、解密。

2.[实现提示]

(1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator 的静态方法getInstance()获得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.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 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 java.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 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 initialize() throws IOException { frame = new JFrame();

frame.getContentPane().setBackground(Color.LIGHT_GR AY);

frame.setTitle("服务器端");

frame.setBounds(100, 100, 450, 300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );

frame.getContentPane().setLayout(null);

final TextArea SDealWith_After = new TextArea();

SDealWith_After.setBounds(227, 103, 150, 115);

frame.getContentPane().add(SDealWith_After);

相关文档
最新文档