📄 hlencrsaface.java
字号:
jMenuItem4ActionPerformed(evt); } }); jMenu3.add(jMenuItem4); jMenuBar1.add(jMenu3); setJMenuBar(jMenuBar1); java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setBounds((screenSize.width-666)/2, (screenSize.height-563)/2, 666, 563); }//GEN-END:initComponents private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed stop=true;//停止加密 jMenuItem6.setEnabled(false); }//GEN-LAST:event_jMenuItem6ActionPerformed private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed readFile=true; try{ srcFileLoader();//打开明文文件 } catch(Exception e){} }//GEN-LAST:event_jButton2ActionPerformed private void jRadioButtonMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonMenuItem2ActionPerformed try{ UIManager.setLookAndFeel(str1); SwingUtilities.updateComponentTreeUI(this); } catch(Exception e ){} }//GEN-LAST:event_jRadioButtonMenuItem2ActionPerformed private void jRadioButtonMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButtonMenuItem1ActionPerformed try{ UIManager.setLookAndFeel(str2); SwingUtilities.updateComponentTreeUI(this); } catch(Exception e ){} }//GEN-LAST:event_jRadioButtonMenuItem1ActionPerformed private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed save();// 保存明文 }//GEN-LAST:event_jMenuItem5ActionPerformed private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed JOptionPane.showMessageDialog(HLEncRSAFace.this," HL-RAS加密软件\n版本 1.0 (运行环境:JDK1.5以上的版本)\n\n" + "开发成员:何泽荣、林喜鹏\n热诚欢迎您能对此软件提出宝贵意见!!!\n华南农业大学02级计算机1班\n(Email:zelosor@163.com)", "关于",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("")); }//GEN-LAST:event_jMenuItem4ActionPerformed private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed if(EncKey==true){//如果已产生密钥,则读取明文并加密 EncFileTh=new EncFileThread(); EncFileTh.start();//调用加密明文线程 jButton3.setText("停止加密"); } else{ JOptionPane.showMessageDialog(HLEncRSAFace.this, "你还没有读取公钥,请先读取公钥!", "Error", JOptionPane.ERROR_MESSAGE); } }//GEN-LAST:event_jMenuItem3ActionPerformed private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed System.exit(0); }//GEN-LAST:event_jMenuItem2ActionPerformed private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed try{ srcFileLoader();//打开明文文件 } catch(Exception e){} }//GEN-LAST:event_jMenuItem1ActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed if(jButton3.getText()=="加密明文"){ if(EncKey==true){//如果已产生密钥,则读取明文并加密 jMenuItem6.setEnabled(true); jTextArea3.setText(""); EncFileThread EncFileTh=new EncFileThread(); EncFileTh.start();//调用加密明文线程 jButton3.setText("停止加密"); } else{ JOptionPane.showMessageDialog(HLEncRSAFace.this, "你还没有读取公钥,请先读取公钥!", "Error", JOptionPane.ERROR_MESSAGE); } } else { stop=true; jMenuItem6.setEnabled(false); } }//GEN-LAST:event_jButton3ActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed readKey=true; try{ srcFileLoader();//打开公钥文件 } catch(Exception e){} }//GEN-LAST:event_jButton1ActionPerformed private void displayEncFile(){//输出密文方法 HLEncRSAFace.this.setTitle("HL-RSA加密器 - 正在输出密文..."); String stri="密文如下:"+"\n"; jTextArea3.setText(stri+this.EncString);//输出加密后的密文 HLEncRSAFace.this.setTitle("HL-RSA加密器"); } private void setProgressBar(int progresserLength){//出来进度条 float pos=(float)progresserPos/progresserLength*100; jLabel4.setText("已加密:"+(String.valueOf((int)pos))+" %"); progresser.setValue(progresserPos); } private void encFile(){//对明文进行加密方法 if(-1!=jTextArea2.getText().length()){//明文非空 HLEncRSAFace.this.setTitle("HL-RSA加密器 - 正在加密“"+fileName+"”文件"); //获取明文 String stringText=jTextArea2.getText(); staticEncRSA.setMessage(stringText); jMenuItem3.setEnabled(false); jMenuItem3.setText("正在加密"); String stri="密文如下:"+"\n"; jTextArea3.setText(stri);//输出加密后的密文 progresserPos=0; try{int progresserLength=stringText.getBytes("UTF-8").length; progresser.setMaximum(progresserLength); while(staticEncRSA.nextSectUnencText(1024)&&stop==false){ //当前明文段的字节数组长度 this.ByteTextlength=staticEncRSA.getByteTextLength(); //复位STextEndPos int STextEndPos=0; progresserPos+=this.ByteTextlength; setProgressBar(progresserLength); while(STextEndPos<this.ByteTextlength&&stop==false){ STextEndPos=staticEncRSA.EncRsa(STextEndPos);//调用加密类的加密方法 this.STextEndPos=STextEndPos; } staticEncRSA.froEncRsa(); } if(stop==false){ staticEncRSA.writeEncStringToFile(); JOptionPane.showMessageDialog(HLEncRSAFace.this, "明文已成功加密!", "恭喜,加密成功!", JOptionPane.INFORMATION_MESSAGE); this.EncString=staticEncRSA.getEncString(); DisplayEncFileThread DisplayFile=new DisplayEncFileThread(); DisplayFile.start();//调用另一线程输出密文 } else {JOptionPane.showMessageDialog(HLEncRSAFace.this, "加密明文已取消!", "提示!", JOptionPane.INFORMATION_MESSAGE); progresser.setValue(0); jButton3.setText("加密明文"); jLabel4.setText("已加密:"+(String.valueOf(0))+" %"); } jMenuItem3.setEnabled(true); jMenuItem3.setText("加密明文"); } catch(Exception e){ } } else {JOptionPane.showMessageDialog(HLEncRSAFace.this, "明文为空,请输入或打开明文!", "Error", JOptionPane.ERROR_MESSAGE); } stop=false; jButton3.setText("加密明文"); } private void srcFileLoader()throws Exception{//浏览文件,打开文件 JFileChooser fileChooser=new JFileChooser("."); int r=fileChooser.showOpenDialog(HLEncRSAFace.this); File file=fileChooser.getSelectedFile(); if (file.isFile() && file.canRead()) { if(readFile==true){ fileName=file.getName(); readFile=false; if(r==JFileChooser.APPROVE_OPTION) { try{ BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file))); String s=""; jTextArea2.setText(s); while((s=br.readLine())!=null) { jTextArea2.append(s+"\n"); } br.close(); } catch(IOException except){ except.printStackTrace(); } } } if(readKey==true){ keyName=file.getPath(); staticEncRSA.readPublicKey(keyName); jTextField1.setText(staticEncRSA.getMid_E());//输出公开密钥e jTextArea1.setText(staticEncRSA.getMid_N());//输出公开密钥n EncKey=true; readKey=false; } } else{JOptionPane.showMessageDialog(HLEncRSAFace.this, "打开文件失败: " + file, "Error", JOptionPane.ERROR_MESSAGE); } } public void save(){ //保存明文操作 JFileChooser chooser; chooser=new JFileChooser("."); int r=chooser.showSaveDialog(HLEncRSAFace.this); if(r==JFileChooser.APPROVE_OPTION){ File file=chooser.getSelectedFile(); if(file.getName().indexOf(".")!=-1) ; else file=new File(file.getPath()+".txt"); String content=jTextArea2.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(); } } } /** * @param args the command line arguments */ public static void main(String args[]){ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new HLEncRSAFace(new HLEncRSA()).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.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenu jMenu3; private javax.swing.JMenu jMenu4; 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.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; 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.JSplitPane jSplitPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextArea jTextArea2; private javax.swing.JTextArea jTextArea3; private javax.swing.JTextField jTextField1; // 变量声明结束//GEN-END:variables private File srcfile; private JProgressBar progresser; private Boolean EncKey,readKey,readFile,stop,pause; private int STextEndPos,ByteTextlength,progresserPos; private String fileName,keyName; private String EncString; private String str1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; private String str2 = "javax.swing.plaf.metal.MetalLookAndFeel"; private EncFileThread EncFileTh;}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; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -