zoukankan      html  css  js  c++  java
  • 使用jframe编写一个base64加密解密工具

    该工具可以使用exe4j来打包成exe工具(如何打包自己百度)

    先上截图功能

    运行main方法后,会弹出如下窗口

    输入密文

    然后点击解密,在点格式化

    代码分享

    package tools;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.StringWriter;
    import java.io.UnsupportedEncodingException;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;

    import org.apache.commons.codec.binary.Base64;
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;

    /** TODO(用一句话描述这个类做什么用)。
    *
    * <pre>
    * 构建组:toJar
    * 作者:chenrd
    * 邮箱:1658219123@qq.com
    * 日期:2019-3-7-下午3:06:58
    * 版权:个人所有
    * </pre>
    * Base64 加密解密工具
    */
    public class ChenrdBase64 extends JFrame {
    private static final long serialVersionUID = 1L;
    Base64 base64 = new Base64();
    JPanel desktop = new JPanel();
    JPanel jfr1 = new JPanel();
    JPanel btnAllPanel = new JPanel();

    JButton incodeBtn = new JButton("加密");
    JButton decodeBtn = new JButton("解密");
    JButton formatBtn = new JButton("格式化");

    JTextArea inputMsg = new JTextArea("",30,50);

    public ChenrdBase64() {
    super("base64-chenrd");
    this.add(desktop);
    this.setBounds(0, 0, 900, 600);
    this.setLocationRelativeTo(null);
    //关闭该窗口的时候不用关闭主窗口,所以要注释下行代码
    // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //按平台默认的方式把添加的窗口有序的排列,不然子窗口挡住了父窗口
    this.setLocationByPlatform(true);
    this.setVisible(true);
    init();
    }

    public void init() {
    inputMsg.setLineWrap(true);//激活自动换行功能
    inputMsg.setWrapStyleWord(true);//激活断行不断字功能
    JScrollPane js = new JScrollPane(inputMsg);

    jfr1.setLayout(new BorderLayout());
    jfr1.add(js,BorderLayout.NORTH);

    //设置组件垂直排列
    // btnAllPanel.setLayout(new BoxLayout(btnAllPanel, BoxLayout.X_AXIS));
    btnAllPanel.add(incodeBtn);
    btnAllPanel.add(decodeBtn);
    btnAllPanel.add(formatBtn);

    jfr1.add(btnAllPanel,BorderLayout.SOUTH);
    desktop.add(jfr1, 0);

    // 换行
    inputMsg.setSelectedTextColor(Color.BLUE);
    // 激活自动换行功能
    inputMsg.setLineWrap(true);
    // 激活断行不断字功能
    inputMsg.setWrapStyleWord(true);
    //给按钮添加点击事件
    incodeBtn.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {
    try {
    String msg = inputMsg.getText();
    inputMsg.setText(new String(Base64.encodeBase64(msg.getBytes("utf-8"))));
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }
    }
    });
    //给按钮添加点击事件
    decodeBtn.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {
    String msg = inputMsg.getText();
    try {
    inputMsg.setText(new String(base64.decode(msg.getBytes("utf-8"))));
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }

    }
    });
    //给按钮添加点击事件
    formatBtn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    // 格式化输出格式(使用dom4j格式化)
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    StringWriter writer = new StringWriter();
    // 格式化输出流
    XMLWriter xmlWriter = new XMLWriter(writer, format);
    // 将document写入到输出流
    try {
    String text = inputMsg.getText();
    Document doc = DocumentHelper.parseText(text);
    xmlWriter.write(doc);
    inputMsg.setText(writer.toString());
    System.out.println(writer.toString());
    xmlWriter.close();
    } catch (Exception e1) {
    e1.printStackTrace();
    }
    }
    });
    }
    public static void main(String[] args) {
    ChenrdBase64 my64 = new ChenrdBase64();
    my64.validate();//刷新所有子组件
    }
    }

  • 相关阅读:
    111. Minimum Depth of Binary Tree (Tree; DFS)
    124. Binary Tree Maximum Path Sum (Tree; DFS)
    99. Recover Binary Search Tree (Tree; DFS)
    129. Sum Root to Leaf Numbers(Tree; DFS)
    PAT 1073 Scientific Notation
    PAT 1050 String Subtraction
    PAT 1037 Magic Coupon
    PAT 1066 Root of AVL Tree
    PAT 1053 Path of Equal Weight
    PAT 1040 Longest Symmetric String
  • 原文地址:https://www.cnblogs.com/rdchen/p/10489984.html
Copyright © 2011-2022 走看看