⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiemi.java

📁 应用公钥加密体制的代表算法RSA 应用对称加密算法DES 应用散列算法MD5计算消息摘要 数字签名并验证
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                .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 + -