分组密码加密Word格式.docx
- 文档编号:16756756
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:14
- 大小:37.85KB
分组密码加密Word格式.docx
《分组密码加密Word格式.docx》由会员分享,可在线阅读,更多相关《分组密码加密Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
客户端解密:
实习代码:
服务器MyServer类:
packageCaesar_Modification;
importjava.awt.EventQueue;
importjava.awt.TextArea;
importjavax.crypto.BadPaddingException;
importjavax.crypto.Cipher;
importjavax.crypto.IllegalBlockSizeException;
importjavax.crypto.NoSuchPaddingException;
importjavax.swing.JFrame;
importjava.awt.Color;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importsun.misc.BASE64Decoder;
importjava.awt.event.ActionListener;
importjava.awt.event.ActionEvent;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.ObjectInputStream;
import.ServerSocket;
import.Socket;
importjava.security.InvalidKeyException;
importjava.security.Key;
importjava.security.NoSuchAlgorithmException;
publicclassMyServer{
privateJFrameframe;
privatestaticServerSocketserver_text;
privatestaticSocketyou_text;
privatestaticServerSocketserver_key;
privatestaticSocketyou_key;
privatestaticTextAreaSDealWith_Before;
privatestaticTextAreaSDealWith_After;
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
MyServerwindow=newMyServer();
window.frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
publicMyServer()throwsIOException{
initialize();
privatevoidinitialize()throwsIOException{
frame=newJFrame();
frame.getContentPane().setBackground(Color.LIGHT_GRAY);
frame.setTitle("
服务器端"
);
frame.setBounds(100,100,450,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
finalTextAreaSDealWith_After=newTextArea();
SDealWith_After.setBounds(227,103,150,115);
frame.getContentPane().add(SDealWith_After);
JLabellblNewLabel=newJLabel("
接收到的秘钥"
lblNewLabel.setBounds(227,10,93,15);
frame.getContentPane().add(lblNewLabel);
JLabellabel_1=newJLabel("
处理后"
label_1.setBounds(227,78,54,15);
frame.getContentPane().add(label_1);
JButtonbutton_1=newJButton("
清除"
button_1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
SDealWith_After.setText("
"
SDealWith_Before.setText("
button_1.setBounds(269,228,93,23);
frame.getContentPane().add(button_1);
finalTextAreaPri_KeyS=newTextArea();
Pri_KeyS.setBounds(227,27,150,43);
frame.getContentPane().add(Pri_KeyS);
finalTextAreaSDealWith_Before=newTextArea();
SDealWith_Before.setBounds(10,103,156,115);
frame.getContentPane().add(SDealWith_Before);
JButtonbtnNewButton_1=newJButton("
开启秘钥通道"
btnNewButton_1.addActionListener(newActionListener(){
server_key=newServerSocket(5679);
you_key=server_key.accept();
Pri_KeyS.setText("
秘钥已传送。
}catch(IOExceptione1){
e1.printStackTrace();
btnNewButton_1.setBounds(10,6,150,23);
frame.getContentPane().add(btnNewButton_1);
JButtonbtnNewButton=newJButton("
解密"
btnNewButton.addActionListener(newActionListener(){
InputStreamin=you_text.getInputStream();
InputStreamis=you_key.getInputStream();
ObjectInputStreamb=newObjectInputStream(is);
Keyk1=(Key)b.readObject();
b.close();
inttotal_ctext=in.available();
byte[]ctext=newbyte[total_ctext];
byte[]ptext=newbyte[total_ctext];
Ciphercp=Cipher.getInstance("
DES"
cp.init(Cipher.DECRYPT_MODE,k1);
BufferedReaderbr=newBufferedReader(newInputStreamReader(in));
Stringcstring=br.readLine();
BASE64Decoderbase64decoder=newBASE64Decoder();
ctext=base64decoder.decodeBuffer(cstring);
ptext=cp.doFinal(ctext);
Stringp=newString(ptext,"
UTF8"
SDealWith_Before.setText(cstring);
SDealWith_After.setText(p);
}catch(IOExceptione2){
e2.printStackTrace();
}catch(NoSuchAlgorithmExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}catch(NoSuchPaddingExceptione1){
}catch(InvalidKeyExceptione1){
}catch(IllegalBlockSizeExceptione1){
}catch(BadPaddingExceptione1){
}catch(ClassNotFoundExceptione1){
you_text.close();
server_text.close();
server_key.close();
you_key.close();
}catch(IOExceptione1){
btnNewButton.setBounds(111,228,93,23);
frame.getContentPane().add(btnNewButton);
JButtonbtnNewButton_2=newJButton("
开启密文通道"
btnNewButton_2.addActionListener(newActionListener(){
server_text=newServerSocket(5678);
you_text=server_text.accept();
btnNewButton_2.setBounds(10,39,150,23);
frame.getContentPane().add(btnNewButton_2);
JLabellbldes=newJLabel("
通过DES加密后"
lbldes.setBounds(20,74,93,23);
frame.getContentPane().add(lbldes);
}
客户端MyClient类:
importjavax.crypto.KeyGenerator;
importjavax.swing.JTextField;
importjava.io.FileOutputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.io.PrintWriter;
import.UnknownHostException;
importjavax.swing.JTextArea;
importsun.misc.BASE64Encoder;
publicclassMyClient{
privateJTextFieldLogin_C;
privatestaticTextAreaCDealWith_Before;
privatestaticTextAreaPri_KeyC;
privatestaticKeysecretkey;
MyClientwindow=newMyClient();
publicMyClient(){
privatevoidinitialize(){
客户端"
明文"
lblNewLabel.setBounds(169,18,112,33);
finalTextAreaCDealWith_Before=newTextArea();
CDealWith_Before.setBounds(169,61,242,143);
frame.getContentPane().add(CDealWith_Before);
加密"
SocketmySocket_text;
Stringstr_before="
;
mySocket_text=newSocket(Login_C.getText(),5678);
OutputStreamos=null;
os=mySocket_text.getOutputStream();
PrintWriterpw=newPrintWriter(os);
str_before=CDealWith_Before.getText();
Ciphercp=Cipher.getInstance("
//初始化Cipher对象
cp.init(Cipher.ENCRYPT_MODE,secretkey);
byte[]ptext=str_before.getBytes("
//指定UTF8字符集,可以跨平台
byte[]ctext;
ctext=cp.doFinal(ptext);
BASE64Encoderbase64encoder=newBASE64Encoder();
pw.write(base64encoder.encode(ctext));
pw.close();
}//加密序列化
mySocket_text.close();
}catch(UnknownHostExceptione1){
}catch(Exceptione2){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分组 密码 加密