📄 jiemi.java
字号:
.addComponent(jButton10) .addContainerGap()) ); pack(); }// </editor-fold> private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { try{ String filename1=jTextField3.getText(); FileInputStream f = new FileInputStream(filename1); ObjectInputStream b = new ObjectInputStream(f); RSAPrivateKey prk = (RSAPrivateKey)b.readObject(); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.UNWRAP_MODE, prk); String filename2=jTextField1.getText(); FileInputStream enc = new FileInputStream(filename2); ObjectInputStream b1 = new ObjectInputStream(enc); byte[] wrapedkey = (byte[]) b1.readObject(); Key key = cipher.unwrap(wrapedkey, "DESede", Cipher.SECRET_KEY); FileOutputStream fos2=new FileOutputStream("DES密钥.dat"); ObjectOutputStream b2=new ObjectOutputStream(fos2); b2.writeObject(key); fos2.close(); b2.close(); }catch(Exception e){JOptionPane.showMessageDialog(new Frame(),"error!!");} JOptionPane.showMessageDialog(new Frame(),"被加密的密钥已解密!!"); } private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) { try{ FileInputStream fis1=new FileInputStream("签名.txt"); int num1=fis1.available(); byte[] buf1=new byte[num1]; fis1.read(buf1); FileInputStream fis2=new FileInputStream("摘要.dat"); int num2=fis2.available(); byte[] buf2=new byte[num2]; fis2.read(buf2); String filename=jTextField5.getText(); FileInputStream fis3=new FileInputStream(filename); ObjectInputStream ois=new ObjectInputStream(fis3); RSAPublicKey pbk=(RSAPublicKey)ois.readObject(); Signature s=Signature.getInstance("MD5withRSA"); s.initVerify(pbk); s.update(buf2); boolean f=s.verify(buf1); if(f){ JOptionPane.showMessageDialog(new Frame(),"数字签名验证成功!!"); } else{ JOptionPane.showMessageDialog(new Frame(),"数字签名验证失败!!"); } } catch(Exception e){System.out.println("error");{} } } private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) { Frame f=new Frame(); f.setLocation(300,300); f.setSize(600,400); f.addWindowListener(new WindowAdapter(){ public void windowClosed(WindowEvent e){ System.exit(0); } }); FileDialog fd=new FileDialog(f,"输入对方公钥",FileDialog.LOAD); fd.setVisible(true); String strfile=fd.getDirectory()+fd.getFile(); jTextField5.setText(strfile); } private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { try{ FileInputStream fis=new FileInputStream("消息.txt"); int num=fis.available(); byte[] b=new byte[num]; fis.read(b); MessageDigest m=MessageDigest.getInstance("MD5"); m.update(b); byte ds[]=m.digest(); String result=""; for(int i=0;i<ds.length;i++){ result+=Integer.toHexString((0x000000ff & ds[i]) | 0xffffff00).substring(6); } //System.out.println(result); FileOutputStream fos=new FileOutputStream("摘要.dat"); byte[] buf1=result.getBytes(); fos.write(buf1); fos.close(); fis.close(); }catch(Exception e){System.out.println("error");} JOptionPane.showMessageDialog(new Frame(),"消息摘要已计算并输出!!"); } private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { try{ String filename1=jTextField4.getText(); FileInputStream fis1=new FileInputStream(filename1); ObjectInputStream ob=new ObjectInputStream(fis1); Key skey=(Key)ob.readObject(); Cipher cp=Cipher.getInstance("DESede"); cp.init(Cipher.DECRYPT_MODE,skey); String filename2=jTextField2.getText(); FileInputStream fis=new FileInputStream(filename2); FileOutputStream fos=new FileOutputStream("签名.txt"); CipherOutputStream cos=new CipherOutputStream(fos,cp); int s=0; for(int i=0;i<128+10;i++){ cos.write(fis.read()); } fos = new FileOutputStream("消息.txt"); cos = new CipherOutputStream(fos,cp); while((s=fis.read())!=-1){ cos.write(s); } cos.close(); fos.close(); fis.close(); }catch(Exception e){JOptionPane.showMessageDialog(new Frame(),"error!!");} JOptionPane.showMessageDialog(new Frame(),"文件已解密!!"); } private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { Frame f=new Frame(); f.setLocation(300,300); f.setSize(600,400); f.addWindowListener(new WindowAdapter(){ public void windowClosed(WindowEvent e){ System.exit(0); } }); FileDialog fd=new FileDialog(f,"输入密钥",FileDialog.LOAD); fd.setVisible(true); String strfile4=fd.getDirectory()+fd.getFile(); jTextField4.setText(strfile4); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { Frame f=new Frame(); f.setLocation(300,300); f.setSize(600,400); f.addWindowListener(new WindowAdapter(){ public void windowClosed(WindowEvent e){ System.exit(0); } }); FileDialog fd=new FileDialog(f,"输入解密文件",FileDialog.LOAD); fd.setVisible(true); String strfile3=fd.getDirectory()+fd.getFile(); jTextField2.setText(strfile3); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { Frame f=new Frame(); f.setLocation(300,300); f.setSize(600,400); f.addWindowListener(new WindowAdapter(){ public void windowClosed(WindowEvent e){ System.exit(0); } }); FileDialog fd=new FileDialog(f,"输入密钥",FileDialog.LOAD); fd.setVisible(true); String strfile2=fd.getDirectory()+fd.getFile(); jTextField3.setText(strfile2); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Frame f=new Frame(); f.setLocation(300,300); f.setSize(600,400); f.addWindowListener(new WindowAdapter(){ public void windowClosed(WindowEvent e){ System.exit(0); } }); FileDialog fd=new FileDialog(f,"输入解密文件",FileDialog.LOAD); fd.setVisible(true); String strfile1=fd.getDirectory()+fd.getFile(); jTextField1.setText(strfile1); } /** * @param args the command line arguments */ public static void main(String args[]) throws Exception{ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new jiemi().setVisible(true); } }); mythread m=new mythread(); mythread1 m1=new mythread1(); m.start(); m1.start(); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton10; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton9; private javax.swing.JLabel jLabel1; 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.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField4; private javax.swing.JTextField jTextField5; // End of variables declaration }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -