3DES加解密工具说明文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3DES加/解密工具说明文档
武汉大学计算机学院
软件名称:
3DES加解密
软件功能:
用3DES算法对文件进行加密,使用密文链接模式及密文挪用技术
编程语言:
JAVA
编程环境:
Eclipse
发布方式:
已打包成jar文件
运行方式:
在安装jre的机子上可以直接双击jar文件运行,也可以用rar解压后用编译工具运行
使用说明:
在文件输入框输入文件路径,在密钥输入框输入16个字节的密钥,并点击密钥输入,然后点击加解密
模块说明:
类名:Myframe:
功能:实现界面,并完成密文反馈、短快处理及文件输入输出。
调用其他类:THREE
入口参数:通过界面输入文件路径及密钥
出口参数:无
类名:THREE
功能:实现3DES的3圈加密。
调用其他类:DES
入口参数:64位明文,128子密钥。
出口参数:64位密文
类名:DES
功能:实现3DES的一圈加密。
调用其他类:无
入口参数:64位明文,64位子密钥。
出口参数:64位密文
各个类的源码及详细说明:
Myframe 类:
: /*
* Created on 2004-11-13
*
* TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.UnsupportedEncodingException;
import java.io.*;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import mydes.DES;
import mydes.THREE;
/**
* @author TINA
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class myframe extends JFrame implements ActionListener
{
JButton Enc=new JButton("加密"); //加密按钮
JButton Dec=new JButton("解密"); //解密按钮
JTextArea taLog=new JTextArea(); //状态显示区
JLabel findfile=new JLabel("文件名:");
JButton key1=new JButton("密钥"); //密钥输入按钮
JTextField filepath=new JTextField(20);//文件路径输入部分
JTextField keytext=new JTextField(16);//密钥输入部分
byte[] cipherKey1=new byte[8]; //3DES的密钥K1
byte[] cipherKey2=new byte[8]; //3DES的密钥K2
int[][] subKeys1=new int[16][48]; //用于存放K1产生的子密钥
int[][] subKeys2=new int[16][48]; //用于存放K2产生的子密钥
byte[]
bZ={(byte)0x00,(byte)0x03,(byte)0x45,(byte)0xf3,(byte)0x33,(byte)0x21,(byte)0x75,(byte)0 xed};
//初始向量Z
byte key[]=new byte[16];
public static void main(String args[]) //生成界面
{
myframe frame=new myframe();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
public myframe() //界面的构造函数:生成按钮及输入框
{
setTitle("3DES ");
setSize(400,300);
JPanel input=new JPanel();
input.setLayout(new FlowLayout());
input.add(findfile);
input.add(filepath);
JPanel keyarea=new JPanel();