JAVA版exe可执行加密软件
Posted Saper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA版exe可执行加密软件相关的知识,希望对你有一定的参考价值。
1.现在eclipse(myeclipse)中插入以下代码
1.1 MainForm
1 package cee.hui.myfile; 2 import javax.swing.*; 3 import java.awt.*; 4 import java.util.logging.Logger; 5 6 import cee.hui.myfile.CheckCode; 7 public class MainForm extends JFrame { 8 /** 9 * 构造界面 10 * 11 * @author chenh 12 */ 13 private static final long serialVersionUID = 1L; 14 /* 主窗体里面的若干元素 */ 15 private JFrame mainForm = new JFrame("TXT文件加密"); // 主窗体,标题为“TXT文件加密” 16 private JLabel label1 = new JLabel("请选择待加密或解密的文件:"); 17 private JLabel label2 = new JLabel("请选择加密或解密后的文件存放位置:"); 18 public static JTextField sourcefile = new JTextField(); // 选择待加密或解密文件路径的文本域 19 public static JTextField targetfile = new JTextField(); // 选择加密或解密后文件路径的文本域 20 public static JButton buttonBrowseSource = new JButton("浏览"); // 浏览按钮 21 public static JButton buttonBrowseTarget = new JButton("浏览"); // 浏览按钮 22 public static JButton buttonEncrypt = new JButton("加密"); // 加密按钮 23 public static JButton buttonDecrypt = new JButton("解密"); // 解密按钮 24 public MainForm() { 25 Container container = mainForm.getContentPane(); 26 /* 设置主窗体属性 */ 27 mainForm.setSize(400, 270);// 设置主窗体大小 28 mainForm.setTitle("陈辉专用加密,解压软件 QQ:1187163927"); 29 mainForm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 设置主窗体关闭按钮样式 30 mainForm.setLocationRelativeTo(null);// 设置居于屏幕中央 31 mainForm.setResizable(false);// 设置窗口不可缩放 32 mainForm.setLayout(null); 33 mainForm.setVisible(true);// 显示窗口 34 /* 设置各元素位置布局 */ 35 label1.setBounds(30, 10, 300, 30); 36 sourcefile.setBounds(50, 50, 200, 30); 37 buttonBrowseSource.setBounds(270, 50, 60, 30); 38 label2.setBounds(30, 90, 300, 30); 39 targetfile.setBounds(50, 130, 200, 30); 40 buttonBrowseTarget.setBounds(270, 130, 60, 30); 41 buttonEncrypt.setBounds(100, 180, 60, 30); 42 buttonDecrypt.setBounds(200, 180, 60, 30); 43 /* 为各元素绑定事件监听器 */ 44 buttonBrowseSource.addActionListener(new BrowseAction()); // 为源文件浏览按钮绑定监听器,点击该按钮调用文件选择窗口 45 buttonBrowseTarget.addActionListener(new BrowseAction()); // 为目标位置浏览按钮绑定监听器,点击该按钮调用文件选择窗口 46 buttonEncrypt.addActionListener(new EncryptAction()); // 为加密按钮绑定监听器,单击加密按钮会对源文件进行加密并输出到目标位置 47 buttonDecrypt.addActionListener(new DecryptAction()); // 为解密按钮绑定监听器,单击解密按钮会对源文件进行解密并输出到目标位置 48 sourcefile.getDocument().addDocumentListener(new TextFieldAction());// 为源文件文本域绑定事件,如果文件是.txt类型,则禁用解密按钮;如果是.chenh文件,则禁用加密按钮。 49 sourcefile.setEditable(false);// 设置源文件文本域不可手动修改 50 targetfile.setEditable(false);// 设置目标位置文本域不可手动修改 51 container.add(label1); 52 container.add(label2); 53 container.add(sourcefile); 54 container.add(targetfile); 55 container.add(buttonBrowseSource); 56 container.add(buttonBrowseTarget); 57 container.add(buttonEncrypt); 58 container.add(buttonDecrypt); 59 } 60 public static void main(String[] args) { 61 CheckCode checkCode = new CheckCode(); 62 boolean result = false; 63 do { 64 try { 65 result = checkCode.Check(checkCode.CodeInput()); 66 } catch (Exception e) { 67 result = checkCode.Check(checkCode.CodeInput()); 68 } 69 } while (!result); 70 if (result){ 71 new MainForm(); 72 } 73 74 } 75 }
1.2 BrowseAction
1 package cee.hui.myfile; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import javax.swing.JFileChooser; 5 import javax.swing.filechooser.FileNameExtensionFilter; 6 public class BrowseAction implements ActionListener { 7 public void actionPerformed(ActionEvent e) { 8 if (e.getSource().equals(MainForm.buttonBrowseSource)) { 9 JFileChooser fcDlg = new JFileChooser(); 10 fcDlg.setDialogTitle("请选择待加密或解密的文件..."); 11 FileNameExtensionFilter filter = new FileNameExtensionFilter( 12 "文本文件(*.txt;*.chenh)", "txt", "chenh"); 13 fcDlg.setFileFilter(filter); 14 int returnVal = fcDlg.showOpenDialog(null); 15 if (returnVal == JFileChooser.APPROVE_OPTION) { 16 String filepath = fcDlg.getSelectedFile().getPath(); 17 MainForm.sourcefile.setText(filepath); 18 } 19 } else if (e.getSource().equals(MainForm.buttonBrowseTarget)) { 20 JFileChooser fcDlg = new JFileChooser(); 21 fcDlg.setDialogTitle("请选择加密或解密后的文件存放目录"); 22 fcDlg.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 23 int returnVal = fcDlg.showOpenDialog(null); 24 if (returnVal == JFileChooser.APPROVE_OPTION) { 25 String filepath = fcDlg.getSelectedFile().getPath(); 26 MainForm.targetfile.setText(filepath); 27 } 28 } 29 } 30 }
1.3 CheckCode
1 package cee.hui.myfile; 2 3 import javax.swing.JOptionPane; 4 5 //授权码 6 public class CheckCode { 7 public boolean Check(String code) { 8 if (code.equals("chenhui")) {return true;} 9 return false; 10 } 11 public String CodeInput() { 12 return JOptionPane.showInputDialog("请输入邀请码","请QQ联系:1187163927"); 13 } 14 }
1.4 DecryptAction
1 package cee.hui.myfile; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 import javax.swing.JOptionPane; 9 public class DecryptAction implements ActionListener { 10 public void actionPerformed(ActionEvent e) { 11 // TODO Auto-generated method stub 12 if (MainForm.sourcefile.getText().isEmpty()) { 13 JOptionPane.showMessageDialog(null, "请选择待解密文件!"); 14 } 15 else if (MainForm.targetfile.getText().isEmpty()) { 16 JOptionPane.showMessageDialog(null, "请选择解密后文件存放目录!"); 17 } 18 else { 19 String sourcepath = MainForm.sourcefile.getText(); 20 String targetpath = MainForm.targetfile.getText(); 21 File file = new File(sourcepath); 22 String filename = file.getName(); 23 File dir = new File(targetpath); 24 if (file.exists() && dir.isDirectory()) { 25 File result = new File(getFinalFile(targetpath, filename)); 26 if (!result.exists()) { 27 try { 28 result.createNewFile(); 29 } catch (IOException e1) { 30 JOptionPane.showMessageDialog(null, 31 "目标文件创建失败,请检查目录是否为只读!"); 32 } 33 } 34 try { 35 FileReader fr = new FileReader(file); 36 FileWriter fw = new FileWriter(result); 37 int ch = 0; 38 while ((ch = fr.read()) != -1) { 39 // System.out.print(Encrypt(ch)); 40 fw.write(Decrypt(ch)); 41 } 42 fw.close(); 43 fr.close(); 44 JOptionPane.showMessageDialog(null, "解密成功!"); 45 } catch (Exception e1) { 46 JOptionPane.showMessageDialog(null, "未知错误!"); 47 } 48 } 49 else if (!file.exists()) { 50 JOptionPane.showMessageDialog(null, "待解密文件不存在!"); 51 } else { 52 JOptionPane.showMessageDialog(null, "解密后文件存放目录不存在!"); 53 } 54 } 55 } 56 public char Decrypt(int ch) { 57 // double x = 0 - Math.pow(ch, 2); 58 int x = ch - 1; 59 return (char) (x); 60 } 61 public String getFinalFile(String targetpath, String filename) { 62 int length = filename.length(); 63 String finalFileName = filename.substring(0, length - 4); 64 String finalFile = targetpath + "\\\\" + finalFileName + ".txt"; 65 return finalFile; 66 } 67 }
1.5 EncryptAction
1 package cee.hui.myfile; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 import javax.swing.JOptionPane; 9 public class EncryptAction implements ActionListener { 10 public void actionPerformed(ActionEvent e) { 11 // TODO Auto-generated method stub 12 if (MainForm.sourcefile.getText().isEmpty()) { 13 JOptionPane.showMessageDialog(null, "请选择待加密文件!"); 14 } 15 else if (MainForm.targetfile.getText().isEmpty()) { 16 JOptionPane.showMessageDialog(null, "请选择加密后文件存放目录!"); 17 } 18 else { 19 String sourcepath = MainForm.sourcefile.getText(); 20 String targetpath = MainForm.targetfile.getText(); 21 File file = new File(sourcepath); 22 String filename = file.getName(); 23 File dir = new File(targetpath); 24 if (file.exists() && dir.isDirectory()) { 25 File result = new File(getFinalFile(targetpath, filename)); 26 if (!result.exists()) { 27 try { 28 result.createNewFile(); 29 } catch (IOException e1) { 30 JOptionPane.showMessageDialog(null, 31 "目标文件创建失败,请检查目录是否为只读!"); 32 } 33 } 34 try { 35 FileReader fr = new FileReader(file); 36 FileWriter fw = new FileWriter(result); 37 int ch = 0; 38 while ((ch = fr.read()) != -1) { 39 // System.out.print(Encrypt(ch)); 40 fw.write(Encrypt(ch)); 41 } 42 fw.close(); 43 fr.close(); 44 JOptionPane.showMessageDialog(null, "加密成功!"); 45 } catch (Exception e1) { 46 JOptionPane.showMessageDialog(null, "未知错误!"); 47 } 48 } 49 else if (!file.exists()) { 50 JOptionPane.showMessageDialog(null, "待加密文件不存在!"); 51 } else { 52 JOptionPane.showMessageDialog(null, "加密后文件存放目录不存在!"); 53 } 54 } 55 } 56 public char Encrypt(int ch) { 57 int x = ch + 1; 58 return (char) (x); 59 } 60 public String getFinalFile(String targetpath, String filename) { 61 int length = filename.length(); 62 String finalFileName = filename.substring(0, length - 4); 63 String finalFile = targetpath + "\\\\" + finalFileName + ".chenh"; 64 return finalFile; 65 } 66 }
1.6 TextFieldAction
1 package cee.hui.myfile; 2 import javax.swing.event.DocumentEvent; 3 import javax.swing.event.DocumentListener; 4 public class TextFieldAction implements DocumentListener { 5 public void insertUpdate(DocumentEvent e) { 6 // TODO Auto-generated method stub 7 ButtonAjust(); 8 } 9 public void removeUpdate(DocumentEvent e) { 10 // TODO Auto-generated method stub 11 ButtonAjust(); 12 } 13 public void changedUpdate(DocumentEvent e) { 14 // TODO Auto-generated method stub 15 ButtonAjust(); 16 } 17 public void ButtonAjust() { 18 String file = MainForm.sourcefile.getText(); 19 if (file.endsWith("txt")) { 20 MainForm.buttonDecrypt.setEnabled(false); 21 MainForm.buttonEncrypt.setEnabled(true); 22 } 23 if (file.endsWith("chenh")) { 24 MainForm.buttonEncrypt.setEnabled(false); 25 MainForm.buttonDecrypt.setEnabled(true); 26 } 27 } 28 }
对于本博客所写出运行的结果,稍微懂一点java代码的程序员即可改掉程序运行出来的第一句弹出框,因为未连接网络数据库,程序中只是测试写死的邀请码。
将以上文件编译好成可执行文件后,导出成可执行的JAR文件
具体步骤如下:File(文件) -> Export(导出) -> Java -> Runnable JAR File(可执行的JAR文件) -> Next(下一步)
在Launch configuration(配置启动文件):选择MainForm
在Export destination(导出路径)选择你需要放的文件路径。
在Library handing 选择 Package requared libraries into generated JAR
如下图:
直接点击Finish(完成)。
至此,你已经完成加密文件的大半,但此文件只限于JAR文件,并不是太美观。
你可以使用 jar转exe文件将jar文件转为exe。
下载连接
以上涉及到的邀请码都为:chenhui
以上是关于JAVA版exe可执行加密软件的主要内容,如果未能解决你的问题,请参考以下文章
有啥工具可以将java源代码编译成windows里的.exe可执行文件呀, 急!!