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

📄 framecfreedown.java

📁 数字证书注册和签发系统
💻 JAVA
字号:
package cproissue;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.nio.*;
import java.security.*;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import com.borland.jbcl.layout.XYConstraints;
import com.borland.jbcl.layout.XYLayout;
import java.awt.Color;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class FrameCFreeDown extends JFrame {
    XYLayout xYLayout1 = new XYLayout();
    JLabel jLabel1 = new JLabel();
    JButton jButton1 = new JButton();
    JButton jButton4 = new JButton();
    TitledBorder titledBorder1 = new TitledBorder("");
    TitledBorder titledBorder2 = new TitledBorder("");
    Border border1 = BorderFactory.createEmptyBorder();
    Border border2 = BorderFactory.createEmptyBorder();
    CertEntity ce;
    public FrameCFreeDown() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    public FrameCFreeDown(CertEntity ce) {
        try {
            jbInit();
            this.ce=ce;
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        titledBorder2 = new TitledBorder(BorderFactory.createEmptyBorder(), "");
        this.getContentPane().setBackground(UIManager.getColor(
                "controlHighlight"));
        this.setTitle("申请证书");
        getContentPane().setLayout(xYLayout1);
        jLabel1.setText("第四步:导出私钥和证书。");
        jButton1.addActionListener(new FrameCFreeDown_jButton1_actionAdapter(this));
        jButton4.setText("取消");
        jButton4.addActionListener(new FrameCFreeDown_jButton4_actionAdapter(this));
        jButton1.setText("下一步");
        this.getContentPane().add(jLabel1, new XYConstraints(118, 83, -1, -1));
        this.getContentPane().add(jButton1, new XYConstraints(73, 186, 78, -1));
        this.getContentPane().add(jButton4, new XYConstraints(230, 186, 78, -1));
    }
//第四步
    public void jButton1_actionPerformed(ActionEvent e) {
        try
        {
            //从密钥库读取此用户证书的私钥
            FileInputStream inn=new FileInputStream("mykeystore");
            KeyStore ks1=KeyStore.getInstance("JKS");
            ks1.load(inn,ce.stroepass.toCharArray());
            java.security.cert.Certificate cn=ks1.getCertificate(""+ce.cuser+"");
            PrivateKey prk=(PrivateKey)ks1.getKey(""+ce.cuser+"",ce.cpass.toCharArray());
            inn.close();
            String fileIni=ce.cuser+"_privkeySSS.dat";
            //写未加密的私钥
            FileOutputStream  f=new FileOutputStream(fileIni);
            ObjectOutputStream b=new  ObjectOutputStream(f);
            b.writeObject(prk);
            b.close();
            int i;
            //转化待加密的私钥
            FileInputStream fis=new FileInputStream(fileIni);
            byte[] keyFirst=new byte[fis.available()];
            fis.read(keyFirst);
            fis.close();

            String s=prk.toString();
            byte ptext[]=s.getBytes("UTF8");
            //得到私钥保护密码做为DES加密密钥
            byte[] passwd=((ce.cpass +"0000000000000000")).getBytes();
            DESedeKeySpec pbks=new DESedeKeySpec(passwd);
            SecretKeyFactory kf=SecretKeyFactory.getInstance("DESede");
            Key k=kf.generateSecret(pbks);
            //初始化密钥器
            Cipher cp=Cipher.getInstance("DESede");
            cp.init(Cipher.ENCRYPT_MODE, k);
            //第一次加密
            byte ctext1[]=cp.doFinal(keyFirst);
            //第二次加密
            byte ctext2[]=cp.doFinal(ctext1);
            //写文件
            FileOutputStream f2=new FileOutputStream(""+ce.cuser+"_privkey.dat");

            ByteBuffer bf=ByteBuffer.allocate(2);
            short sm=(short)ctext1.length;
            bf.putShort(sm);
            byte[] bt=bf.array();
            ByteBuffer bf1=ByteBuffer.allocate(2);
            short sm1=(short)ctext2.length;
            bf1.putShort(sm1);
            byte[] bt1=bf1.array();

          /*  ByteBuffer bf1=ByteBuffer.allocate(2);
            bf1.put(bt);
            short s2=bf1.getShort();*/
            f2.write(bt);
            f2.write(bt1);
            f2.write("0".getBytes("UTF8"));
            f2.write(" ".getBytes("UTF8"));
            f2.write(" ".getBytes("UTF8"));
            f2.write(" ".getBytes("UTF8"));
            f2.write(ctext1);
            f2.write(ctext2);

            //从密钥库读取此用户签名后的证书,以.cer文件的形式保存
            String ss2="keytool -export -alias "+ce.cuser+"_signed -file "
                       +ce.cuser+"_signed.cer  -keystore mykeystore -storepass "+ce.stroepass+"";
            String cmd2="cmd /E:ON /c start "+ss2;
            Runtime.getRuntime().exec(cmd2);
            //第五步
            FrameFinal ff=new FrameFinal(ce);
            ff.setSize(400,350);
            ff.setLocation(312,234);
            ff.setVisible(true);
            this.dispose();
        }
        catch(Exception ex)
         {
            System.out.println(ex.getMessage());
         }
    }
//返回主界面
    public void jButton4_actionPerformed(ActionEvent e) {
        this.dispose();
    }
}


class FrameCFreeDown_jButton4_actionAdapter implements ActionListener {
    private FrameCFreeDown adaptee;
    FrameCFreeDown_jButton4_actionAdapter(FrameCFreeDown adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton4_actionPerformed(e);
    }
}


class FrameCFreeDown_jButton1_actionAdapter implements ActionListener {
    private FrameCFreeDown adaptee;
    FrameCFreeDown_jButton1_actionAdapter(FrameCFreeDown adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}

⌨️ 快捷键说明

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