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

📄 des_encrypt.java

📁 实现DES和RSA的加密解密,MD5还有数字签名。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            FileInputStream f = new FileInputStream("Skey_RSA_priv.dat");
            ObjectInputStream b = new ObjectInputStream(f);
            RSAPrivateKey prk = (RSAPrivateKey)b.readObject();
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.UNWRAP_MODE, prk);
            FileInputStream des = new FileInputStream("DES_RSAed.dat");
            ObjectInputStream b1 = new ObjectInputStream(des);
            byte[] wrapedkey = (byte[]) b1.readObject();
            Key key = cipher.unwrap(wrapedkey, "DESede", Cipher.SECRET_KEY);
            FileOutputStream fos2=new FileOutputStream("DES_key2.dat");
            ObjectOutputStream b2=new ObjectOutputStream(fos2);
            b2.writeObject(key);
            fos2.close();
            b2.close();
            jTextArea1.append("DES密钥解密完毕,DES密钥保存在当前目录中。\n");
        }catch(Exception e){System.out.println(e);}
    }//GEN-LAST:event_jB5ActionPerformed
    
    private void jB9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB9ActionPerformed
        try{
            FileInputStream f = new FileInputStream("Skey_RSA_pub.dat");
            ObjectInputStream b = new ObjectInputStream(f);
            RSAPublicKey pbk = (RSAPublicKey)b.readObject();
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.WRAP_MODE, pbk);
            FileInputStream des = new FileInputStream("DES_key.dat");
            ObjectInputStream b1 = new ObjectInputStream(des);
            SecretKey key = (SecretKey)b1.readObject();
            byte[] wrapedkey = cipher.wrap(key);
            OutputStream fos = new FileOutputStream("DES_RSAed.dat"); 
            ObjectOutputStream b2=new ObjectOutputStream(fos);
            b2.writeObject(wrapedkey);
            b2.close();
            fos.close();
            jTextArea1.append("DES密钥加密完毕,加密后的DES密钥保存在当前目录中。\n");
        }catch(Exception e){System.out.println(e);}
    }//GEN-LAST:event_jB9ActionPerformed

    private void jB4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB4MouseClicked
        try{
            KeyPairGenerator kpg =KeyPairGenerator.getInstance("RSA");
            kpg.initialize(1024);
            KeyPair kp=kpg.genKeyPair();
            PublicKey pbk=kp.getPublic();
            PrivateKey prk=kp.getPrivate();
            FileOutputStream fos1=new FileOutputStream("Skey_RSA_pub.dat");
            ObjectOutputStream b1=new ObjectOutputStream(fos1);
            b1.writeObject(pbk);
            FileOutputStream fos2=new FileOutputStream("Skey_RSA_priv.dat");
            ObjectOutputStream b2=new ObjectOutputStream(fos2);
            b2.writeObject(prk);
            fos1.close();
            fos2.close();
            b1.close();
            b2.close();
            jTextArea1.append("新的RSA密钥已生成,并保存在当前目录中。\n");
        }catch(Exception e){}
    }//GEN-LAST:event_jB4MouseClicked
            
    private void jB7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jB7ActionPerformed
        try{KeyGenerator kg = KeyGenerator.getInstance("DESede");
        kg.init(168);
        SecretKey k = kg.generateKey();
        FileOutputStream f = new FileOutputStream("DES_key.dat");
        ObjectOutputStream b =new ObjectOutputStream(f);
        b.writeObject(k);
        f.close();
        b.close();
        jTextArea1.append("新的DSE密钥已经生成,并保存在当前目录中。\n");
        }catch(Exception e){}
    }//GEN-LAST:event_jB7ActionPerformed
    
    private void jB10MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB10MouseClicked
        try{
            MessageDigest m = MessageDigest.getInstance("MD5");
            FileInputStream fin = new FileInputStream(file);
            DigestInputStream din = new DigestInputStream(fin,m);
            while(din.read() != -1);
            byte[] data =m.digest(); //计算解密后的文件的消息摘要,用于验证签名。
            FileInputStream f2 = new FileInputStream("Sign2.dat");
            int num2 = f2.available();
            byte[] signeddata = new byte[num2];
            f2.read(signeddata);
            FileInputStream f3 = new FileInputStream("Skey_RSA_pub.dat");
            ObjectInputStream b = new ObjectInputStream(f3);
            RSAPublicKey pbk = (RSAPublicKey)b.readObject();
            Signature s = Signature.getInstance("MD5WithRSA");
            s.initVerify(pbk);
            s.update(data);
            if(s.verify(signeddata))
                jTextArea1.append("通过签名验证。\n");
            else
                jTextArea1.append("注意!没有通过签名验证。\n");
            f2.close();
            f3.close();
            b.close();
        }catch(Exception e){System.out.println(e);}
    }//GEN-LAST:event_jB10MouseClicked
    
    private void jB6MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB6MouseClicked
        f=new Frame();
        f.setLocation(300,300);
        f.setSize(600,400);
        f.addWindowListener(new WindowAdapter(){
            public void windowClosed(WindowEvent e){
                System.exit(0);
            }
        });
        fd.setVisible(true);
        strfile=fd.getDirectory()+fd.getFile();
        if(fd.getFile() ==null) jTextField1.setText("");
        else jTextField1.setText(strfile);
    }//GEN-LAST:event_jB6MouseClicked
    
    private void jB8MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB8MouseClicked
        try{FileInputStream f = new FileInputStream("DES_key.dat");
        ObjectInputStream ob = new ObjectInputStream(f);
        Key k = (Key)ob.readObject();
        Cipher cp = Cipher.getInstance("DESede");
        cp.init(Cipher.DECRYPT_MODE,k);
        FileInputStream in = new FileInputStream("DESed.dat");
        FileOutputStream out = new FileOutputStream("Temp.dat");
        CipherOutputStream cout = new CipherOutputStream(out,cp);
        int b = 0;
        while((b=in.read()) != -1){
            cout.write(b);
        }
        cout.close();
        out.close();
        in.close();
        FileInputStream in3 = new FileInputStream("Temp.dat");
        FileOutputStream out2 = new FileOutputStream("Sign2.dat");
        byte[] buf = new byte[128];
        int num3=in3.read(buf);
        file= new String(buf).trim();
        for(int i = 0;i<128;i++){
            out2.write(in3.read());
        }
        out2.close();
        FileOutputStream out3 = new FileOutputStream(file);
        while((b=in3.read()) != -1){
            out3.write(b);
        }
        out3.close();
        in3.close();
        File delf = new File("Temp.dat");
        if(delf.exists())delf.delete();
        jTextArea1.append("解密完毕,解密后的文件保存在当前目录中。\n");
        }catch(Exception e){System.out.println(e);}
    }//GEN-LAST:event_jB8MouseClicked
    
    private void jB3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB3MouseClicked
        try{FileInputStream f = new FileInputStream("DES_key2.dat");
        ObjectInputStream ob = new ObjectInputStream(f);
        Key k = (Key)ob.readObject();
        Cipher cp = Cipher.getInstance("DESede");
        cp.init(Cipher.ENCRYPT_MODE,k);
        FileOutputStream out = new FileOutputStream("DESed.dat");
        CipherOutputStream cout = new CipherOutputStream(out,cp);
        byte[] buf = new byte[128];
        byte[] buff =new byte[128];
        for(int i=0;i<128;i++){
            buff[i] = 0;
        }
        buf = fd.getFile().getBytes();
        for(int i = 0;i<buf.length;i++){
            buff[i]=buf[i];
        }
        cout.write(buff);
        FileInputStream in = new FileInputStream("Sign.dat");
        int b = 0;
        while((b=in.read()) != -1){
            cout.write(b);
        }
        in = new FileInputStream(strfile);
        while((b=in.read()) != -1){
            cout.write(b);
        }
        cout.close();
        out.close();
        in.close();
        jTextArea1.append("加密完毕,加密后的文件保存在当前目录中。\n");
        }catch(Exception e){System.out.println(e);}
    }//GEN-LAST:event_jB3MouseClicked
    
    private void jB2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB2MouseClicked
        try{
            FileInputStream f = new FileInputStream("MD5.dat");
            int num = f.available();
            byte[] data = new byte[num];
            f.read(data);
            FileInputStream f2 = new FileInputStream("Skey_RSA_priv.dat");
            ObjectInputStream b = new ObjectInputStream(f2);
            RSAPrivateKey prk = (RSAPrivateKey)b.readObject();
            Signature s =Signature.getInstance("MD5WithRSA");
            s.initSign(prk);
            s.update(data);
            byte[] signeddata = s.sign();
            int i;
            jTextArea1.append("签名:");
            for(i = 0;i<data.length;i++){
                jTextArea1.append(signeddata[i]+",");
            }
            jTextArea1.append("\n");
            FileOutputStream f3 = new FileOutputStream("Sign.dat");
            f3.write(signeddata);
            f.close();
            f2.close();
            f3.close();
        }catch(Exception e){}
    }//GEN-LAST:event_jB2MouseClicked
    
    private void jB1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jB1MouseClicked
        try{
            MessageDigest m = MessageDigest.getInstance("MD5");
            FileInputStream fin = new FileInputStream(strfile);
            DigestInputStream din = new DigestInputStream(fin,m);
            while(din.read() != -1);
            byte s[] =m.digest();
            String result = "";
            for (int i =0;i<s.length;i++){
                result+=Integer.toHexString((0x000000ff & s[i]) | 0xffffff00).substring(6);
            }
            jTextArea1.append("MD5:"+result+"\n");
            FileOutputStream f3 = new FileOutputStream("MD5.dat");
            f3.write(s);
            fin.close();
            din.close();
            f3.close();
        }catch(Exception e){}
    }//GEN-LAST:event_jB1MouseClicked
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                DES_encrypt DES = new DES_encrypt();
                DES.setTitle("RSA/DES加密");
                DES.setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jB1;
    private javax.swing.JButton jB10;
    private javax.swing.JButton jB2;
    private javax.swing.JButton jB3;
    private javax.swing.JButton jB4;
    private javax.swing.JButton jB5;
    private javax.swing.JButton jB6;
    private javax.swing.JButton jB7;
    private javax.swing.JButton jB8;
    private javax.swing.JButton jB9;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    public javax.swing.JScrollPane jScrollPane1;
    public static javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration//GEN-END:variables
    private Frame f;
    FileDialog fd = new FileDialog(f,"打开文件",FileDialog.LOAD);
    private String strfile = "";
    private String file = "";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -