【加密解密】ADFGX密码 --图形界面实现加密解密
来源:互联网 发布:mac怎么播放wmv 编辑:程序博客网 时间:2024/06/16 21:42
(一)、加密:
Encrypt.java类:
package cn.hncu;import java.util.ArrayList;import java.util.Arrays;public class Encrypt { private String message; private String key; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public Encrypt() { } //(1)自定义字母表填满替换方格 public char[][] letterTable(){ char[][] a=new char[6][6];//建立一个6行6列的二维数组,利用密文来对照此表中的每个字符, a[0][1]='A';a[0][2]='D';a[0][3]='F';a[0][4]='G';a[0][5]='X'; a[1][0]='A';a[2][0]='D';a[3][0]='F';a[4][0]='G';a[5][0]='X'; a[1][1]='b';a[1][2]='t';a[1][3]='a';a[1][4]='l';a[1][5]='p'; a[2][1]='d';a[2][2]='h';a[2][3]='o';a[2][4]='z';a[2][5]='k'; a[3][1]='q';a[3][2]='f';a[3][3]='v';a[3][4]='s';a[3][5]='n'; a[4][1]='g';a[4][2]='j';a[4][3]='c';a[4][4]='u';a[4][5]='x'; a[5][1]='m';a[5][2]='r';a[5][3]='e';a[5][4]='w';a[5][5]='y'; return a; } //(2)获得中间替换结果 //中间替换结果是建立一个集合,集合中的第一个list放置明文,第二个list放置替换后的结果,以供下次使用替换结果 public ArrayList<Object> midRes(){ char[] chMess=message.toCharArray();//将明文变为字符数组 char[][] chLetter=letterTable();//调用整个字母表替换方格 ArrayList<String> chList=new ArrayList<String>();//用于放置明文的集合 ArrayList<String> strList=new ArrayList<String>();//用户放置替换结果的集合 ArrayList<Object> list=new ArrayList<Object>();//用于放置两个集合的总集合 list.add(chList);//将明文集合添加到list中 list.add(strList);//将替换结果添加到list中 //依次将明文的每个字符与字母表中的每个字符做比较 for(int k=0;k<chMess.length;k++){ for(int i=0;i<chLetter.length;i++){//第i行 for(int j=0;j<chLetter[i].length;j++){//第j列 if(chMess[k]==chLetter[i][j]){//第k个明文字符是否与字母表中的某一个相等 String ch=chMess[k]+"";//将字母转换为字符串 String str=(chLetter[i][0]+""+chLetter[0][j]); chList.add(ch); strList.add(str); } } } } return list;//返回出集合结果 } //(3)利用一个移位密钥加密 //得到移位加密后的格子 private char[][] shiftTable(){ ArrayList<String> list=(ArrayList<String>) midRes().get(1);//得到中间替换结果的集合 Object[] objs=list.toArray();//将其list转换为数组 StringBuffer strMidRes=new StringBuffer();//此字符串用于追加加密后的每个字符 for(Object s:objs){ strMidRes.append(s);//进行追加 } char[] chKey=key.toUpperCase().toCharArray();//将旧密钥全部变为大写并且转换为字符数组 int n=strMidRes.length();//整个中间密文的长度 int col=chKey.length;//新的移位加密后的格子的列数 int row=n%col==0?n/col:n/col+1;//新的移位加密后的格子的行数 int k=0; char[][] shiftTable=new char[row+1][col];//创建一个新的移位加密后的新格子 for(int i=0;i<shiftTable.length;i++){ for(int j=0;j<shiftTable[i].length;j++){ if(i==0){ shiftTable[i][j]=chKey[j];// }else{ if(k<n){ shiftTable[i][j]=strMidRes.charAt(k);//获得中间密文的第k个 k++; } if(k==n && n%col!=0){//根据题目要求:最后不足一行的部分全部用X填充 for(int t=n%col;t<col;t++){ shiftTable[i][t]='X'; } } } } } return shiftTable; } //(4)按照字母顺序排列密钥,形成新密文 public StringBuffer sortLetter(){ StringBuffer strbuf=new StringBuffer(); char[][] chTemp=shiftTable();//先得到整个移位后的格子 char[] chKey=key.toUpperCase().toCharArray(); Arrays.sort(chKey); for(int i=0;i<chKey.length;i++){ for(int j=0;j<chTemp[0].length;j++){ if(chKey[i]==chTemp[0][j]){ for(int x=1;x<chTemp.length;x++){ strbuf.append(chTemp[x][j]); } strbuf.append(" "); } } } System.out.println(strbuf); return strbuf; }}
(二)解密:
Decrypted.java类:
package cn.hncu;import java.util.Arrays;public class Decrypted { private String ciphertext; private String key; public Decrypted(){ } public String getCiphertext() { return ciphertext; } public void setCiphertext(String ciphertext) { this.ciphertext = ciphertext; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } /*排列密钥的字母顺序,根据新密钥、旧密钥排列顺序关系, *排列出旧密钥的密文:即得到sortLetter()数组 */ private char[][] sortLetter(){ String key2=key;//将旧密钥key赋给新密钥key2 char[] chKey=key.toCharArray();//旧密钥变为字符数组,需要使用 char[] chKey2=key2.toCharArray();//新密钥也变为字符数组,也是需要使用到的 Arrays.sort(chKey2);//最关键的一步:密钥排序 char[] chCiphertext=ciphertext.replaceAll(" ", "").toCharArray();//替换密文中的所有空格为空,并将其变为字符数组 int row=chCiphertext.length/chKey.length;//根据密文字符的总个数与密钥字符的个数计算出新格子的行数 int col=chKey.length;//密钥字符的个数即为新格子的列数 char[][] chCipher=new char[row][col];//建立密文二维数组 /* * 用for循环依次遍历两个密钥中的所有字符, * 如果正好相等,则将旧密钥格子整列赋给新密钥格子对应的一列 */ for(int i=0;i<chKey.length;i++){ for(int j=0;j<chKey2.length;j++){ int len=col*j; if(chKey[i]==chKey2[j]){ for(int i2=0;i2<row;i2++){ chCipher[i2][i]=chCiphertext[len++];//将整列的字符赋给新格子列 } } } } return chCipher; } /* * 解密查看中间替换结果: * 通过得到的反向密文,分别以两个字符为一组计算出其字符对应的坐标, * 将找到的字符追加到sb中,此sb便是最后解密出的明文 */ public StringBuffer shift(){ StringBuffer res=new StringBuffer(); char[][] chLetter=sortLetter(); char[][] leters= new Encrypt().letterTable();//得到整个字母表 char[] temp=new char[25]; int k=0; for(int i=0;i<chLetter.length;i++){ for(int j=0;j<chLetter[i].length;j++){ temp[k]=chLetter[i][j];//依次拿出每个字母表中的字符 if((k+1)%2==0){ int r=trans(temp[k-1]);//因为得到的是最外行和最外列的字符,需要得到其对应的数字坐标,这里用到一个转换方法 int c=trans(temp[k]); res.append(leters[r][c]); } k++; } } return res; } private int trans(char ch){ int n=0; switch(ch){ case 'A':n=1;break; case 'D':n=2;break; case 'F':n=3;break; case 'G':n=4;break; case 'X':n=5;break; } return n; }}
(三)、值对象:
FileMessage.java类:
package cn.hncu;public class FileMessage { private String fileurlMessSrc;//加密明文地址 private String fileurlCry;//加密密文地址 private String fileurlCry2;//解密密文地址 private String fileurlMessSrc2;//解密明文地址 private String key; private char[][] letters; public String getFileurlMessSrc() { return fileurlMessSrc; } public void setFileurlMessSrc(String fileurlMessSrc) { this.fileurlMessSrc = fileurlMessSrc; } public String getFileurlCry() { return fileurlCry; } public void setFileurlCry(String fileurlCry) { this.fileurlCry = fileurlCry; } public String getFileurlCry2() { return fileurlCry2; } public void setFileurlCry2(String fileurlCry2) { this.fileurlCry2 = fileurlCry2; } public String getFileurlMessSrc2() { return fileurlMessSrc2; } public void setFileurlMessSrc2(String fileurlMessSrc2) { this.fileurlMessSrc2 = fileurlMessSrc2; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public char[][] getLetters() { return letters; } public void setLetters(char[][] letters) { this.letters = letters; }}
(四)、文件工具:
FileUtils.java类:
package cn.hncu.utils;import java.awt.HeadlessException;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import javax.swing.JFileChooser;import cn.hncu.Decrypted;import cn.hncu.Encrypt;import cn.hncu.FileMessage;public class FileUtils { public static String openFile() { File file=null; try { JFileChooser jfile=new JFileChooser(); jfile.showDialog(null, "打开"); file=jfile.getSelectedFile(); System.out.println(file.toString()); } catch (HeadlessException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ return file.toString(); } }}
(五)、图形界面:
/* * mainFrame.java * * Created on __DATE__, __TIME__ */package cn.hncu.ui;import java.awt.event.ActionEvent;import java.awt.event.MouseEvent;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JOptionPane;import cn.hncu.Decrypted;import cn.hncu.Encrypt;import cn.hncu.FileMessage;import cn.hncu.utils.FileUtils;/** * * @author __USER__ */public class mainFrame extends javax.swing.JFrame { /** Creates new form mainFrame */ public mainFrame() { initComponents(); setTitle("ADFGX密码加密和解密"); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ //GEN-BEGIN:initComponents // <editor-fold defaultstate="collapsed" desc="Generated Code"> //初始化所有参数: FileMessage filemess=new FileMessage(); private void initComponents() { jSplitPane1 = new javax.swing.JSplitPane(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); tfdkey = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); jtrepl = new javax.swing.JTextArea(); btnSave = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel(); tfdCry2 = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); tfdmessSrc2 = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel(); tfdmessSrc = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel(); tfdCry = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); jtRepRes = new javax.swing.JTextArea(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jScrollPane3 = new javax.swing.JScrollPane(); jtMess = new javax.swing.JTextArea(); jScrollPane4 = new javax.swing.JScrollPane(); jtCry = new javax.swing.JTextArea(); btnEncrypt = new javax.swing.JButton(); btnDecrypt = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); openMenuItem = new javax.swing.JMenuItem(); saveMenuItem = new javax.swing.JMenuItem(); saveAsMenuItem = new javax.swing.JMenuItem(); exitMenuItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JMenu(); cutMenuItem = new javax.swing.JMenuItem(); copyMenuItem = new javax.swing.JMenuItem(); pasteMenuItem = new javax.swing.JMenuItem(); deleteMenuItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); contentsMenuItem = new javax.swing.JMenuItem(); aboutMenuItem = new javax.swing.JMenuItem(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setFocusCycleRoot(false); setMinimumSize(new java.awt.Dimension(1400, 700)); getContentPane().setLayout(null); jLabel1.setFont(new java.awt.Font("宋体", 1, 24)); jLabel1.setForeground(new java.awt.Color(255, 0, 0)); jLabel1.setText("ADFGX\u5bc6\u7801"); getContentPane().add(jLabel1); jLabel1.setBounds(490, 10, 130, 30); jLabel2.setFont(new java.awt.Font("宋体", 1, 14)); jLabel2.setText("\u8bbe\u7f6e\u5bc6\u94a5\uff1a"); getContentPane().add(jLabel2); jLabel2.setBounds(60, 80, 90, 20); tfdkey.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18)); getContentPane().add(tfdkey); tfdkey.setBounds(130, 80, 400, 30); jLabel3.setFont(new java.awt.Font("宋体", 1, 14)); jLabel3.setText("\u8bbe\u7f6e\u66ff\u6362\u65b9\u683c\uff1a"); getContentPane().add(jLabel3); jLabel3.setBounds(60, 120, 110, 20); jtrepl.setColumns(20); jtrepl.setFont(new java.awt.Font("Monospaced", 1, 18)); jtrepl.setRows(5); jScrollPane1.setViewportView(jtrepl); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(60, 150, 470, 180); /////初始化字母表 Encrypt en = new Encrypt(); final char[][] chs = en.letterTable(); for (int i = 0; i < chs.length; i++) { StringBuffer sb = new StringBuffer(); for (int j = 0; j < chs[i].length; j++) { if (j == 0) { sb.append(chs[i][j]); } else { sb.append("\t" + chs[i][j]); } } String s = new String(sb); jtrepl.append(s + "\n"); s = ""; } /*** * 保存设置 */ btnSave.setFont(new java.awt.Font("宋体", 1, 14)); btnSave.setText("\u4fdd\u5b58\u8bbe\u7f6e"); btnSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnSaveActionPerformed(evt); } private void btnSaveActionPerformed(ActionEvent evt) { String key=tfdkey.getText(); filemess.setKey(key); filemess.setLetters(chs); System.out.println("保存设置"); } }); getContentPane().add(btnSave); btnSave.setBounds(230, 350, 100, 30); jLabel4.setFont(new java.awt.Font("宋体", 1, 14)); jLabel4.setText("\u660e\u6587\u6587\u4ef6\uff1a"); getContentPane().add(jLabel4); jLabel4.setBounds(870, 140, 80, 30); /** * 解密:密文文件 */ tfdCry2.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18)); tfdCry2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tfdCry2MouseClicked(evt); } private void tfdCry2MouseClicked(java.awt.event.MouseEvent evt) { System.out.println("解密密文文件"); String fileurlCry2=FileUtils.openFile(); tfdCry2.setText(fileurlCry2); filemess.setFileurlCry2(fileurlCry2); } }); getContentPane().add(tfdCry2); tfdCry2.setBounds(630, 140, 210, 30); jLabel5.setFont(new java.awt.Font("宋体", 1, 14)); jLabel5.setText("\u5bc6\u6587\u6587\u4ef6\uff1a"); getContentPane().add(jLabel5); jLabel5.setBounds(550, 140, 80, 30); /** * 解密:明文文件 */ tfdmessSrc2.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18)); tfdmessSrc2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tfdmessSrc2MouseClicked(evt); } private void tfdmessSrc2MouseClicked(MouseEvent evt) { System.out.println("解密明文文件"); String fileurlMessSrc2=FileUtils.openFile(); tfdmessSrc2.setText(fileurlMessSrc2); filemess.setFileurlMessSrc2(fileurlMessSrc2); } }); getContentPane().add(tfdmessSrc2); tfdmessSrc2.setBounds(950, 140, 150, 30); jLabel6.setFont(new java.awt.Font("宋体", 1, 14)); jLabel6.setText("\u5bc6\u6587\u6587\u4ef6\uff1a"); getContentPane().add(jLabel6); jLabel6.setBounds(870, 80, 80, 30); /** * 加密:明文文件 */ tfdmessSrc.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18)); tfdmessSrc.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tfdmessSrcMouseClicked(evt); } private void tfdmessSrcMouseClicked(MouseEvent evt) { System.out.println("加密明文文件"); String fileurlMessSrc=FileUtils.openFile(); filemess.setFileurlMessSrc(fileurlMessSrc); tfdmessSrc.setText(fileurlMessSrc); } }); getContentPane().add(tfdmessSrc); tfdmessSrc.setBounds(630, 80, 210, 30); jLabel7.setFont(new java.awt.Font("宋体", 1, 14)); jLabel7.setText("\u660e\u6587\u6587\u4ef6\uff1a"); getContentPane().add(jLabel7); jLabel7.setBounds(550, 80, 80, 30); /** * 加密密文文件 */ tfdCry.setFont(new java.awt.Font("Microsoft YaHei UI", 0, 18)); tfdCry.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tfdCryMouseClicked(evt); } private void tfdCryMouseClicked(MouseEvent evt) { System.out.println("加密密文文件"); String fileurlCry=FileUtils.openFile(); filemess.setFileurlCry(fileurlCry); tfdCry.setText(fileurlCry); } }); getContentPane().add(tfdCry); tfdCry.setBounds(950, 80, 150, 30); jLabel8.setFont(new java.awt.Font("宋体", 1, 14)); jLabel8.setText("\u66ff\u6362\u7ed3\u679c\uff1a"); getContentPane().add(jLabel8); jLabel8.setBounds(550, 240, 80, 30); jtRepRes.setColumns(20); jtRepRes.setEditable(false); jtRepRes.setFont(new java.awt.Font("Monospaced", 1, 18)); jtRepRes.setRows(5); jScrollPane2.setViewportView(jtRepRes); getContentPane().add(jScrollPane2); jScrollPane2.setBounds(630, 200, 650, 90); jLabel9.setFont(new java.awt.Font("宋体", 1, 14)); jLabel9.setText("\u660e\u6587\uff1a"); getContentPane().add(jLabel9); jLabel9.setBounds(560, 300, 50, 30); jLabel10.setFont(new java.awt.Font("宋体", 1, 14)); jLabel10.setText("\u5bc6\u6587\uff1a"); getContentPane().add(jLabel10); jLabel10.setBounds(930, 310, 50, 20); jtMess.setColumns(20); jtMess.setEditable(false); jtMess.setFont(new java.awt.Font("Monospaced", 1, 18)); jtMess.setRows(5); jScrollPane3.setViewportView(jtMess); getContentPane().add(jScrollPane3); jScrollPane3.setBounds(630, 310, 290, 250); jtCry.setColumns(20); jtCry.setEditable(false); jtCry.setFont(new java.awt.Font("Monospaced", 1, 18)); jtCry.setRows(5); jScrollPane4.setViewportView(jtCry); getContentPane().add(jScrollPane4); jScrollPane4.setBounds(980, 310, 300, 250); /** * 按钮:加密 */ btnEncrypt.setFont(new java.awt.Font("宋体", 1, 14)); btnEncrypt.setText("\u52a0\u5bc6"); btnEncrypt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnEncryptActionPerformed(evt); } private void btnEncryptActionPerformed(ActionEvent evt) { System.out.println("按钮:加密"); //FileUtils.encryptFile(filemess); Encrypt en=new Encrypt(); en.setKey(filemess.getKey()); BufferedReader br=null; BufferedWriter bw=null; try { br=new BufferedReader(new FileReader(new File(filemess.getFileurlMessSrc()))); bw=new BufferedWriter(new FileWriter(new File(filemess.getFileurlCry()))); String str=null; while((str=br.readLine())!=null){ jtMess.append(str+"\n"); en.setMessage(str.replaceAll(" ", "").toLowerCase()); String s=new String(en.sortLetter()); bw.write(s); jtCry.append(s+"\n"); String s1=en.midRes().get(0).toString().replaceAll(",", " "); String s2=en.midRes().get(1).toString().replaceAll(",", ""); jtRepRes.append(s1+"\n"); jtRepRes.append(s2+"\n"); bw.write("\r\n"); bw.flush(); } } catch (Exception e) { e.printStackTrace(); }finally{ try { br.close(); bw.close(); } catch (IOException e) { e.printStackTrace(); } JOptionPane.showMessageDialog(null, "文件加密成功!"); } } }); getContentPane().add(btnEncrypt); btnEncrypt.setBounds(1120, 80, 80, 30); /** * 按钮:解密 */ btnDecrypt.setFont(new java.awt.Font("宋体", 1, 14)); btnDecrypt.setText("\u89e3\u5bc6"); btnDecrypt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnDecryptActionPerformed(evt); } private void btnDecryptActionPerformed(ActionEvent evt) { System.out.println("按钮:解密"); Decrypted de=new Decrypted(); de.setKey(filemess.getKey()); BufferedReader br=null; BufferedWriter bw=null; try { br=new BufferedReader(new FileReader(new File(filemess.getFileurlCry2()))); bw=new BufferedWriter(new FileWriter(new File(filemess.getFileurlMessSrc2()))); String str=null; while((str=br.readLine())!=null){ System.out.println("密文:"+str); jtCry.append(str+"\n"); de.setCiphertext((str.replaceAll(" ", "").toUpperCase())); String s=new String(de.shift()); System.out.println("明文:"+s); bw.write(s); jtMess.append(s+"\n"); bw.write("\r\n"); bw.flush(); } } catch (Exception e) { e.printStackTrace(); }finally{ try { br.close(); bw.close(); } catch (IOException e) { e.printStackTrace(); } } JOptionPane.showMessageDialog(null, "文件解密成功!"); } }); getContentPane().add(btnDecrypt); btnDecrypt.setBounds(1120, 140, 80, 30); fileMenu.setText("File"); openMenuItem.setText("Open"); fileMenu.add(openMenuItem); saveMenuItem.setText("Save"); fileMenu.add(saveMenuItem); saveAsMenuItem.setText("Save As ..."); fileMenu.add(saveAsMenuItem); exitMenuItem.setText("Exit"); exitMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitMenuItemActionPerformed(evt); } }); fileMenu.add(exitMenuItem); menuBar.add(fileMenu); editMenu.setText("Edit"); cutMenuItem.setText("Cut"); editMenu.add(cutMenuItem); copyMenuItem.setText("Copy"); editMenu.add(copyMenuItem); pasteMenuItem.setText("Paste"); editMenu.add(pasteMenuItem); deleteMenuItem.setText("Delete"); editMenu.add(deleteMenuItem); menuBar.add(editMenu); helpMenu.setText("Help"); contentsMenuItem.setText("Contents"); helpMenu.add(contentsMenuItem); aboutMenuItem.setText("About"); helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); setJMenuBar(menuBar); pack(); }// </editor-fold> //GEN-END:initComponents private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_exitMenuItemActionPerformed System.exit(0); }// GEN-LAST:event_exitMenuItemActionPerformed /** * @param args * the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new mainFrame().setVisible(true); } }); } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JMenuItem aboutMenuItem; private javax.swing.JButton btnDecrypt; private javax.swing.JButton btnEncrypt; private javax.swing.JButton btnSave; private javax.swing.JMenuItem contentsMenuItem; private javax.swing.JMenuItem copyMenuItem; private javax.swing.JMenuItem cutMenuItem; private javax.swing.JMenuItem deleteMenuItem; private javax.swing.JMenu editMenu; private javax.swing.JMenuItem exitMenuItem; private javax.swing.JMenu fileMenu; private javax.swing.JMenu helpMenu; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JTextArea jtCry; private javax.swing.JTextArea jtMess; private javax.swing.JTextArea jtRepRes; private javax.swing.JTextArea jtrepl; private javax.swing.JMenuBar menuBar; private javax.swing.JMenuItem openMenuItem; private javax.swing.JMenuItem pasteMenuItem; private javax.swing.JMenuItem saveAsMenuItem; private javax.swing.JMenuItem saveMenuItem; private javax.swing.JTextField tfdCry; private javax.swing.JTextField tfdCry2; private javax.swing.JTextField tfdkey; private javax.swing.JTextField tfdmessSrc; private javax.swing.JTextField tfdmessSrc2; // End of variables declaration//GEN-END:variables}
(六)、明文文件、密文文件、解密后文件:
(七)、运行结果:
1、完整运行结果:
2、加密结果:
得到明文路径、密文路径,点击加密:
得到加密后的结果:
3、解密结果:
阅读全文
0 0
- 【加密解密】ADFGX密码 --图形界面实现加密解密
- 字符串 密码加密解密
- 密码 加密&解密
- 密码 加密跟解密
- 密码加密解密
- 密码加密与解密
- 凯撒密码加密解密--JAVA实现(基础)
- 【加密解密】-AES加密解密实现
- 【加密解密】-AES加密解密实现
- TripleDES实现加密解密///
- java实现加密解密
- QQTEA加密解密实现
- Base64实现加密、解密
- QQTEA加密解密实现
- Base64加密解密实现
- js实现加密解密
- RC4加密解密实现
- C++ 凯撒密码 加密解密
- bzoj 4556 [Tjoi2016&Heoi2016]字符串
- 大神一步步教你读懂ORB算法,赞!!
- Android 利用kenBurnsView实现启动页
- 拓展js中String对象的方法
- 高质量的子程序1
- 【加密解密】ADFGX密码 --图形界面实现加密解密
- ATX 文档
- 课程连接
- vue 2.0 父组件调用子组件中的方法
- Redis和Memcache对比及选择
- 名词过滤(正则表达式)
- Django 遇到的坑
- 串转并模块设计
- Android 为什么注册ACTION_BATTERY_CHANGED,就能立即得到当前电量