1、import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.ScrollPaneConstants;public class DES public static void main(String args) DemoWindow1 dw = new DemoWindow1(DES加密程
2、序);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);class DemoWindow1 extends JFrame implemen
3、ts ActionListener JTextArea jta = new JTextArea();/ 设置文本区的滚动条int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;JScrollPane jsp = new JScrollPane(jta, v, h);/ 菜单JMenuBar menuBar = new JMenuBar();JMenu mainMenu = new JMenu(DES加密JMenuIte
4、m generateItem = new JMenuItem(生成密钥JMenuItem encryptItem = new JMenuItem(加密信息JMenuItem decryptItem = new JMenuItem(解密信息/ 构造函数public DemoWindow1(String title) super(title);/ 添加菜单mainMenu.add(generateItem);mainMenu.addSeparator();mainMenu.add(encryptItem);mainMenu.add(decryptItem);menuBar.add(mainMenu
5、);setJMenuBar(menuBar);/ 添加文本区add(jsp);/ 添加事件监听generateItem.addActionListener(this);encryptItem.addActionListener(this);decryptItem.addActionListener(this);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif (e.getSource() = generateItem) try / 保存密钥文件的目录路径(主要用来设置密钥的保存路径)St
6、ring fileName = null;/ 设置文件选择对话框JFileChooser jfc = new JFileChooser();jfc.setDialogTitle(保存密钥/ 该文件选择对话框只能打开文件目录jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);/ 如果选中,则获取选择的目录名称if (jfc.showSaveDialog(this) = JFileChooser.APPROVE_OPTION) fileName = jfc.getSelectedFile().getPath();/ 如果没有选择目录,则退
7、出if (fileName = null) return;/ 判断目录是否存在,如果不存在,则创建File file = new File(fileName);if (!file.exists()file.mkdir();/ 创建DES密钥生成器KeyGenerator keyGen = KeyGenerator.getInstance(DES/ 采用56位DES密钥keyGen.init(56);/ 生成DES密钥Key key = keyGen.generateKey();System.out.println(key);/ 将密钥存储到指定目录下的“密钥.dat文件中ObjectOutpu
8、tStream out = new ObjectOutputStream(new FileOutputStream(fileName + /密钥.dat);out.writeObject(key);out.close(); catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace(); else if (e.getSource() = encryptItem) / 读取密钥文件的完整路径导入密钥文件/ 如果选中,则获取选择文件的完整路径if (jfc.showOpenDialog(this) = JFile
9、Chooser.APPROVE_OPTION) / 如果没有选择文件,则退出/ 读取密钥文件ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName);Key key = (Key) in.readObject();/ 创建DES加密器Cipher cipher = Cipher.getInstance(/ 设置加密模式cipher.init(Cipher.ENCRYPT_MODE, key);/ 生成密文,存放在cipherText字节数组中byte cipherText = cipher.doFina
10、l(jta.getText().getBytes(UTF-8jfc = new JFileChooser();保存加密文本内容/ 如果选中,则获取选择的文件的完整路径if (fileName = null)/ 将密文存储到指定文件中FileOutputStream fos = new FileOutputStream(fileName, false);fos.write(cipherText);fos.close(); else if (e.getSource() = decryptItem) 打开加密文本内容/ 如果没有选择文件,就 退出/ 读取密文FileInputStream fis = new FileI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1