DES加密解密Java代码.docx
- 文档编号:230288
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:6
- 大小:32.78KB
DES加密解密Java代码.docx
《DES加密解密Java代码.docx》由会员分享,可在线阅读,更多相关《DES加密解密Java代码.docx(6页珍藏版)》请在冰豆网上搜索。
//DES加密:
(1)生成密钥文件
(2)利用密钥,加密文件(3)根据密钥,对加密的文件解密
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.security.Key;
importjavax.crypto.Cipher;
importjavax.crypto.KeyGenerator;
importjavax.swing.JFileChooser;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.ScrollPaneConstants;
publicclassDES{
publicstaticvoidmain(Stringargs[]){
DemoWindow1dw=newDemoWindow1("DES加密程序");
dw.setBounds(dw.getToolkit().getScreenSize().width/3,dw.getToolkit()
.getScreenSize().height/3,
dw.getToolkit().getScreenSize().width/3,dw.getToolkit()
.getScreenSize().height/3);
dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dw.setVisible(true);
}
}
classDemoWindow1extendsJFrameimplementsActionListener{
JTextAreajta=newJTextArea();
//设置文本区的滚动条
intv=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
inth=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPanejsp=newJScrollPane(jta,v,h);
//菜单
JMenuBarmenuBar=newJMenuBar();
JMenumainMenu=newJMenu("DES加密");
JMenuItemgenerateItem=newJMenuItem("生成密钥");
JMenuItemencryptItem=newJMenuItem("加密信息");
JMenuItemdecryptItem=newJMenuItem("解密信息");
//构造函数
publicDemoWindow1(Stringtitle){
super(title);
//添加菜单
mainMenu.add(generateItem);
mainMenu.addSeparator();
mainMenu.add(encryptItem);
mainMenu.add(decryptItem);
menuBar.add(mainMenu);
setJMenuBar(menuBar);
//添加文本区
add(jsp);
//添加事件监听
generateItem.addActionListener(this);
encryptItem.addActionListener(this);
decryptItem.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==generateItem){
try{
//保存密钥文件的目录路径(主要用来设置密钥的保存路径)
StringfileName=null;
//设置文件选择对话框
JFileChooserjfc=newJFileChooser();
jfc.setDialogTitle("保存密钥");
//该文件选择对话框只能打开文件目录
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//如果选中,则获取选择的目录名称
if(jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){
fileName=jfc.getSelectedFile().getPath();
}
//如果没有选择目录,则退出
if(fileName==null){
return;
}
//判断目录是否存在,如果不存在,则创建
Filefile=newFile(fileName);
if(!
file.exists())
file.mkdir();
//创建DES密钥生成器
KeyGeneratorkeyGen=KeyGenerator.getInstance("DES");
//采用56位DES密钥
keyGen.init(56);
//生成DES密钥
Keykey=keyGen.generateKey();
System.out.println(key);
//将密钥存储到指定目录下的“密钥.dat"文件中
ObjectOutputStreamout=newObjectOutputStream(
newFileOutputStream(fileName+"/密钥.dat"));
out.writeObject(key);
out.close();
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}elseif(e.getSource()==encryptItem){
try{
//读取密钥文件的完整路径
StringfileName=null;
//设置文件选择对话框
JFileChooserjfc=newJFileChooser();
jfc.setDialogTitle("导入密钥文件");
//如果选中,则获取选择文件的完整路径
if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
fileName=jfc.getSelectedFile().getPath();
}
//如果没有选择文件,则退出
if(fileName==null){
return;
}
//读取密钥文件
ObjectInputStreamin=newObjectInputStream(
newFileInputStream(fileName));
Keykey=(Key)in.readObject();
//创建DES加密器
Ciphercipher=Cipher.getInstance("DES");
//设置加密模式
cipher.init(Cipher.ENCRYPT_MODE,key);
//生成密文,存放在cipherText字节数组中
byte[]cipherText=cipher.doFinal(jta.getText().getBytes(
"UTF-8"));
//设置文件选择对话框
jfc=newJFileChooser();
jfc.setDialogTitle("保存加密文本内容");
//如果选中,则获取选择的文件的完整路径
if(jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION){
fileName=jfc.getSelectedFile().getPath();
}
//如果没有选择文件,则退出
if(fileName==null)
return;
//将密文存储到指定文件中
FileOutputStreamfos=newFileOutputStream(fileName,false);
fos.write(cipherText);
fos.close();
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}elseif(e.getSource()==decryptItem){
try{
//读取密钥文件的完整路径
StringfileName=null;
//设置文件选择对话框
JFileChooserjfc=newJFileChooser();
jfc.setDialogTitle("打开加密文本内容");
if(jfc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
fileName=jfc.getSelectedFile().getPath();
}
//如果没有选择文件,就退出
if(fileName==null)
return;
//读取密文
FileInputStreamfis=newFileI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DES 加密 解密 Java 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)