从pfx证书中读取擦操作员序列号

对pfx证书不太熟悉的,可以看下这篇文章:https://www.cnblogs.com/Herzog3/p/6119359.html

package org.aisino.fabric.mp.util;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Enumeration;
import java.util.Properties;

import org.aisino.fabric.utils.FileUtil;
import org.apache.commons.io.FileUtils;
import org.bouncycastle.util.encoders.Base64;
/**
 * 
 * @author yang6
 * 从pfx文件里面读取信息
 *
 */
public class ReadPFX { 
     // 先得到keyStore
     private static KeyStore getKeyStore(byte[] pfxData, String password) throws Exception {
         KeyStore keystore = KeyStore.getInstance("PKCS12");
         keystore.load(new ByteArrayInputStream(pfxData), password.toCharArray());
         return keystore;
     }
     
     // x509证书 
     public static X509Certificate getX509Certificate(byte[] pfxData, String password) throws Exception {
         X509Certificate x509Certificate = null;
         KeyStore keystore = getKeyStore(pfxData, password);
         Enumeration enums = keystore.aliases();
         String keyAlias = "";
         while (enums.hasMoreElements()) {
             keyAlias = enums.nextElement();
             if (keystore.isKeyEntry(keyAlias)) {
                 x509Certificate = (X509Certificate) keystore.getCertificate(keyAlias);
             }
         }
         return x509Certificate;
     }

     
     // 得到操作员的证书序列号
     public static String  getOpertatorSn(String strPfx, String strPassword) {
         
         File pfxFile = new File(strPfx);
         String opertatorSn = null;
         try {                                 //org.apach.commons.io
             X509Certificate  cert  = getX509Certificate(FileUtils.readFileToByteArray(pfxFile), strPassword);
             BigInteger serialNumbers =  cert.getSerialNumber();
             
             opertatorSn = serialNumbers.toString(16); // 转十六进制
         
         } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         return opertatorSn;
     }
     
}  

如有啥疑问,可以留言,然后也给大家推荐一篇博客:https://blog.csdn.net/ZuoYanYouYan/article/details/77868584

你可能感兴趣的:(PFX证书,sdk)