📄 hldecrsaface.java
字号:
//密文段起始字符的位置(在EncText中) int SegmentStartPos=staticRSA_Dec.preDecRsa(); preSegmentStartPos=SegmentStartPos; setProgressBar(); progresserPos+=SegmentStartPos-preSegmentStartPos; jMenuItem5.setEnabled(false); jMenuItem5.setText("正在解密1");//changed setTitle("HL-RSA解密器 - 正在解密“"+fileName+"”文件"); while(SegmentStartPos<staticRSA_Dec.getSectText().length()&&stop==false){ preSegmentStartPos=SegmentStartPos; SegmentStartPos=staticRSA_Dec.DecRsa(SegmentStartPos);//调用解密方法 progresserPos+=SegmentStartPos-preSegmentStartPos; } staticRSA_Dec.froDecRsa();//善后处理 } progresserPos=progresserLength; setProgressBar(); if(stop==false){ JOptionPane.showMessageDialog(HLDecRSAFace.this, "密文已成功解密!", "恭喜", JOptionPane.INFORMATION_MESSAGE); jTextArea3.setText(staticRSA_Dec.getDecText());//输出解密后的明文; } else{ JOptionPane.showMessageDialog(HLDecRSAFace.this, "解密密文已取消!", "提示!", JOptionPane.INFORMATION_MESSAGE); progresser.setValue(0); jButton3.setText("解密密文"); jLabel1.setText("已解密:"+(String.valueOf(0))+" %"); } stop=false; jMenuItem5.setEnabled(true); jMenuItem5.setText("解密密文"); setTitle("HL-RSA解密器"); } catch(Exception e){} } else { JOptionPane.showMessageDialog(HLDecRSAFace.this, "你还没有读取密文!", "Error", JOptionPane.ERROR_MESSAGE); } } catch(Exception e){}; jButton3.setText("解密密文"); } private void srcFileLoader()throws Exception{//浏览文件,打开明文 JFileChooser fileChooser=new JFileChooser("."); fileChooser.addChoosableFileFilter(new FileFilterImpl(new String[]{"dat"},"Security Files(*.dat)")); int r=fileChooser.showOpenDialog(HLDecRSAFace.this); File file=fileChooser.getSelectedFile(); if (file.isFile() && file.canRead()) { if(readEncFile=true){ fileName=file.getName(); readEncFile=true; } rsaKeyAndEncFilePath=file.getPath(); } else{JOptionPane.showMessageDialog(HLDecRSAFace.this, "打开文件失败: " + file, "Error", JOptionPane.ERROR_MESSAGE); } } private void save(){//保存明文操作 JFileChooser chooser; chooser=new JFileChooser("."); int r=chooser.showSaveDialog(HLDecRSAFace.this); if(r==JFileChooser.APPROVE_OPTION){ File file=chooser.getSelectedFile(); if(file.getName().indexOf(".")!=-1) ; else file=new File(file.getPath()+".txt"); String content=jTextArea3.getText(); content=StringEdit.StringReplace(content,"\n","\r\n"); try{ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))); bw.write(content); bw.close(); } catch(IOException ioe) { ioe.printStackTrace(); } } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HLDecRSAFace(new HLDecRSA()).setVisible(true); } }); } // 变量声明 - 不进行修改//GEN-BEGIN:variables private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JLabel jLabel1; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenu jMenu3; private javax.swing.JMenu jMenu4; private javax.swing.JMenu jMenu5; private javax.swing.JMenu jMenu6; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JMenuItem jMenuItem1; private javax.swing.JMenuItem jMenuItem2; private javax.swing.JMenuItem jMenuItem3; private javax.swing.JMenuItem jMenuItem4; private javax.swing.JMenuItem jMenuItem5; private javax.swing.JMenuItem jMenuItem6; private javax.swing.JMenuItem jMenuItem7; private javax.swing.JMenuItem jMenuItem8; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem1; private javax.swing.JRadioButtonMenuItem jRadioButtonMenuItem2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextArea jTextArea2; private javax.swing.JTextArea jTextArea3; // 变量声明结束//GEN-END:variables private DataDialog dialog = null; private JProgressBar progresser; private Boolean readEnc,readKey,readEncFile; private Boolean lookJava,stop; private byte[] mt; private HLDecRSA staticRSA_Dec; private int progresserPos,progresserLength; private int midSegmentStartPos; private int keyLength; private String fileName; private String rsaKeyAndEncFilePath; private String str1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; private String str2 = "javax.swing.plaf.metal.MetalLookAndFeel";}class StringEdit//保存明文文件辅助类{ public static String StringReplace(String Source,String indexStr,String replaceWord) { int scanPoint=0; String backUp=Source; while(scanPoint!=-1&&scanPoint<backUp.length()) { scanPoint=backUp.indexOf(indexStr,scanPoint); if(scanPoint!=-1) { String frontStr=backUp.substring(0,scanPoint); String backStr=backUp.substring(scanPoint+indexStr.length(),backUp.length()); backUp=frontStr+replaceWord+backStr; scanPoint++; scanPoint+=(replaceWord.length()-indexStr.length()); } } return backUp; }}//打开文件类型过虑类class FileFilterImpl extends javax.swing.filechooser.FileFilter{ String[] exts; String description; public FileFilterImpl(String[] extensions,String description){ exts=new String[extensions.length]; for(int i=0;i<exts.length;i++) exts[i]=extensions[i]; this.description=description; } public boolean accept(File f){ String fileName=f.getName(); for(int i=0;i<exts.length;i++){ if(fileName.endsWith(exts[i])) return true; } return false; } public String getDescription(){ return description; }}class ConnectInfo { public int keyLength; public ConnectInfo(int keyLen) { keyLength=keyLen; }}//产生密钥对话框类class DataDialog extends JDialog implements ActionListener { private JTextField username, password; private JButton okButton, cancelButton; private boolean ok,yes; private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel2; private Boolean lookJava; private String str1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; private String str2 = "javax.swing.plaf.metal.MetalLookAndFeel"; public DataDialog(JFrame parent,Boolean lookJava) { super(parent, "产生密钥", true); JPanel contenPane=(JPanel)getContentPane(); contenPane.setLayout(null); jLabel2=new JLabel("密钥长度:"); jComboBox1 = new javax.swing.JComboBox(); jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "512", "640", "768", "1024", "1380", "1636", "1892", "2048" })); jButton1 = new javax.swing.JButton("确定"); jButton2 = new javax.swing.JButton("取消"); jButton1.addActionListener(this); jButton2.addActionListener(this); jLabel2.setBounds(new Rectangle(30, 20, 90, 30)); jLabel2.setFont(new java.awt.Font("宋体", 0, 14)); jComboBox1.setBounds(new Rectangle(120, 20, 70, 25)); jButton1.setBounds(new Rectangle(30, 80, 60, 30)); jButton2.setBounds(new Rectangle(130, 80, 60, 30)); contenPane.add(jLabel2); contenPane.add(jComboBox1); contenPane.add(jButton1); contenPane.add(jButton2); setSize(220, 160); setResizable(false); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-230)/2, (screenSize.height-190)/2, 230, 190); if(lookJava==true){ try{ UIManager.setLookAndFeel(str2); SwingUtilities.updateComponentTreeUI(this); } catch(Exception e ){} } } public Boolean getyes(){ return yes; } public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if(source == jButton1) { ok = true; yes=true; setVisible(false); } else if (source == jButton2) setVisible(false); } public boolean showDialog(ConnectInfo transfer,Boolean lookJava) { this.lookJava=lookJava; ok = false; yes=false; if(lookJava==false){ try{ UIManager.setLookAndFeel(str1); SwingUtilities.updateComponentTreeUI(this); } catch(Exception e ){} } show(); if (ok) { transfer.keyLength = Integer.parseInt(jComboBox1.getSelectedItem().toString()); } return ok; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -