分组密码加密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);