知识大全 Java处理PFX格式证书

Posted

篇首语:莫问天涯路几重,轻衫侧帽且从容。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java处理PFX格式证书相关的知识,希望对你有一定的参考价值。

Java处理PFX格式证书  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在Security编程中 有几种典型的密码交换信息文件格式:    DER encoded certificate: cer crt    PEM encoded message: pem    PKCS# Personal Information Exchange: pfx p     PKCS# Certification Request: p     PKCS# cert request response: p r    PKCS# binary message: p b

   cer/ crt是用于存放证书 它是 进制形式存放的 不含私钥     pem跟crt/cer的区别是它以Ascii来表示     pfx/p 用于存放个人证书/私钥 他通常包含保护密码 进制方式    p 是证书请求    p r是CA对证书请求的回复 只用于导入    p b以树状展示证书链(certificate chain) 同时也支持单个证书 不含私钥

  其中 我介绍如何从p /pfx文件中提取密钥对及其长度:    首先 读取pfx/p 文件(需要提供保护密码)    通过别名(Alias 注意 所有证书中的信息项都是通过Alias来提取的)提取你想要分析的证书链    再将其转换为一个以X 证书结构体    提取里面的项 如果那你的证书项放在第一位(单一证书) 直接读取 x Certs[ ](见下面的代码)这个X Certificate对象    X Certificate对象有很多方法 tain 网友希望读取RSA密钥(公私钥)及其长度(见?topicId= &forumId= &) 那真是太Easy了                 X Certificate keyPairCert = x Certs[ ];                int iKeySize = X CertUtil getCertificateKeyLength(keyPairCert);                System out println( 证书密钥算法= +keyPairCert getPublicKey() getAlgorithm());                System out println( 证书密钥长度= +iKeySize);    提取了他所需要的信息

  package  dev dev client keypair;

  import  java io File;     import  java io FileInputStream;     import  java io FileNotFoundException;     import  java io IOException;     import  java security KeyStore;     import  java security KeyStoreException;     import  java security NoSuchAlgorithmException;     import  java security NoSuchProviderException;     import  java security Security;     import  java security cert Certificate;     import  java security cert CertificateException;     import  java security cert X Certificate;     import  dev dev security keytool X CertUtil;

  public   class  LoadKeyFromPKCS   

  public   static   void  main(String[] args)                try                     //  Open an input stream on the keystore file                 String pfxFileName = c:\\\\david turing pfx ;                String pfxPassword = ;

  File fPkcs   =   null ;                 if  (pfxFileName  !=   null )                        //  Open the file                     fPkcs   =   new  File(pfxFileName);               

  FileInputStream fis  =   new  FileInputStream(fPkcs );

  //  Create a keystore object                 KeyStore keyStore  =   null ;                 try                                            //  Need BC provider for PKCS # BKS and UBER                          if  (Security getProvider( BC )  ==   null )                                                       throw   new  Exception( 不能Load入BouncyCastle! );                       

  keyStore  =  KeyStore getInstance( PKCS   BC );                                 catch  (KeyStoreException ex)                                        throw   new  Exception( 不能正确解释pfx文件! );                                 catch  (NoSuchProviderException ex)                                       throw   new  Exception( Security Provider配置有误! );               

  try                                        //  Load the file into the keystore                     keyStore load(fis pfxPassword toCharArray());                                 catch  (CertificateException ex)                                       throw   new  Exception( 证书格式问题! );                                 catch  (NoSuchAlgorithmException ex)                                       throw   new  Exception( 算法不支持! );                                     catch  (FileNotFoundException ex)                                       throw   new  Exception( pfx文件没找到 );                                 catch  (IOException ex)                                       throw   new  Exception( 读取pfx有误! );               

  // 获取我的证书链的中keyEntry的别名                 Certificate[] certs  =  keyStore getCertificateChain( david turing );                X Certificate[] x Certs  =  nvertCertificates(certs);

  if  (x Certs  ==   null )                                       return ;               

  x Certs  =  X CertUtil orderX CertChain(x Certs);

  X Certificate keyPairCert  =  x Certs[ ];

  int  iKeySize  =  X CertUtil getCertificateKeyLength(keyPairCert);                System out println( 证书密钥算法= + keyPairCert getPublicKey() getAlgorithm());                System out println( 证书密钥长度= + iKeySize);

     catch  (Exception e)                   e printStackTrace();                   

cha138/Article/program/Java/hx/201311/26970

相关参考

知识大全 Java数据压缩格式程序设计方法

Java数据压缩格式程序设计方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  GZIP压缩格式

知识大全 java 解析json格式数据

  有时候可能会用到json格式进行数据的传输那么怎么把接收到的数据解析出来呢?下面介绍两种解析json数据的方法      通过谷歌的Gs

知识大全 数据压缩格式Java语言应用程序设计方法

数据压缩格式Java语言应用程序设计方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据压缩

知识大全 使用java将网页保存为mht格式

  packagetag;  importjavaioBufferedInputStream;  importjavaioBufferedOutputStream;  importjavaioBuff

知识大全 Java实现获取指定路径下的指定格式的文件

Java实现获取指定路径下的指定格式的文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  获取指

知识大全 在Java中将数据由UTF8转换成GB2312格式

Java进阶:在Java中将数据由UTF8转换成GB2312格式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 为测试 Java 应用程序生成证书链

为测试Java应用程序生成证书链  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习如何创建数字

知识大全 使用JAVA数字证书做数字签名认证

使用JAVA数字证书做数字签名认证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    keyto

知识大全 学java考什么证书对就业最有利

学java考什么证书对就业最有利?xuejava靠SCJP整数对就业最有利的这是sun公司官方的认证考试。SCJP是Sun提供的针对J2SE的两项认证之一,另一个是SCJD。CJP主要考察开发人员掌握

知识大全 Java中使用密钥库和算法创建数字证书

Java中使用密钥库和算法创建数字证书  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实例说明