• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 如何在Java處理PFX格式證書

        時間:2024-08-02 16:08:04 SUN認證 我要投稿
        • 相關推薦

        如何在Java處理PFX格式證書

          公鑰加密技術12號標準(Public Key Cryptography Standards #12,PKCS#12)為存儲和傳輸用戶或服務器私鑰、公鑰和證書指定了一個可移植的格式。它是一種二進制格式,這些文件也稱為PFX文件。

          開發人員通常需要將PFX文件轉換為某些不同的格式,如PEM或JKS,以便可以為使用SSL通信的獨立Java客戶端或WebLogic Server使用

          在Security編程中,有幾種典型的密碼交換信息文件格式:

          DER-encoded certificate: .cer, .crt

          PEM-encoded message: .pem

          PKCS#12 Personal Information Exchange: .pfx, .p12

          PKCS#10 Certification Request: .p10

          PKCS#7 cert request response: .p7r

          PKCS#7 binary message: .p7b

          .cer/.crt是用于存放證書,它是2進制形式存放的,不含私鑰。

          .pem跟crt/cer的區別是它以Ascii來表示。

          pfx/p12用于存放個人證書/私鑰,他通常包含保護密碼,2進制方式

          p10是證書請求

          p7r是CA對證書請求的回復,只用于導入

          p7b以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰。

          其中,我介紹如何從p12/pfx文件中提取密鑰對及其長度:

          1,首先,讀取pfx/p12文件(需要提供保護密碼)

          2,通過別名(Alias,注意,所有證書中的信息項都是通過Alias來提取的)提取你想要分析的證書鏈

          3,再將其轉換為一個以X509證書結構體

          4,提取里面的項,如果那你的證書項放在第一位(單一證書),直接讀取 x509Certs[0](見下面的代碼)這個X509Certificate對象

          5,X509Certificate對象有很多方法,tain198127網友希望讀取RSA密鑰(公私鑰)及其長度(見http://www.matrix.org.cn/thread.shtml?topicId=43786&forumId=55&#reply),那真是太Easy了,

          X509Certificate keyPairCert = x509Certs[0];

          int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert);

          System.out.println("證書密鑰算法="+keyPairCert.getPublicKey().getAlgorithm());

          System.out.println("證書密鑰長度="+iKeySize);

          提取了他所需要的信息。

          package org.dev2dev.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.X509Certificate;

          import org.dev2dev.security.keytool.X509CertUtil;

          public class LoadKeyFromPKCS12 {

          public static void main(String[] args) {

          try {

          // Open an input stream on the keystore file

          String pfxFileName = " c:\\david.turing.pfx " ;

          String pfxPassword = " 123456 " ;

          File fPkcs12 = null ;

          if (pfxFileName != null ) {

          // Open the file

          fPkcs12 = new File(pfxFileName);

          }

          FileInputStream fis = new FileInputStream(fPkcs12);

          // Create a keystore object

          KeyStore keyStore = null ;

          try

          {

          // Need BC provider for PKCS #12, BKS and UBER

          if (Security.getProvider( " BC " ) == null )

          {

          throw new Exception( " 不能Load入BouncyCastle! " );

          }

          keyStore = KeyStore.getInstance( " PKCS12 " , " 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 " );

          X509Certificate[] x509Certs = X509CertUtil.convertCertificates(certs);

          if (x509Certs == null )

          {

          return ;

          }

          x509Certs = X509CertUtil.orderX509CertChain(x509Certs);

          X509Certificate keyPairCert = x509Certs[ 0 ];

          int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert);

          System.out.println( " 證書密鑰算法= " + keyPairCert.getPublicKey().getAlgorithm());

          System.out.println( " 證書密鑰長度= " + iKeySize);

          } catch (Exception e) {

          e.printStackTrace();

          }

          }

          }

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【如何在Java處理PFX格式證書】相關文章:

        Java中日期的處理方法09-03

        java證書的加密與解密代碼06-12

        用Java如何處理XML數據10-22

        如何在PHP中處理Protocol Buffers數據08-29

        java與javascript之間json格式數據互轉詳解06-20

        sun認證java關于字符串處理技巧06-01

        Java與Java web的區別08-10

        營銷管理的意義何在10-17

        java習題及答案10-25

        學習java技巧09-23

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 中文一区二区三区亚洲欧美 | 日本一本亚洲观看区 | 亚洲精品自在线拍亚洲Aα 亚洲中文字幕超麻 | 亚洲欧美日本大码在线 | 欧美亚洲另类日韩在线网页 | 亚洲日韩va一区二区三区 |

            如何在Java處理PFX格式證書

              公鑰加密技術12號標準(Public Key Cryptography Standards #12,PKCS#12)為存儲和傳輸用戶或服務器私鑰、公鑰和證書指定了一個可移植的格式。它是一種二進制格式,這些文件也稱為PFX文件。

              開發人員通常需要將PFX文件轉換為某些不同的格式,如PEM或JKS,以便可以為使用SSL通信的獨立Java客戶端或WebLogic Server使用

              在Security編程中,有幾種典型的密碼交換信息文件格式:

              DER-encoded certificate: .cer, .crt

              PEM-encoded message: .pem

              PKCS#12 Personal Information Exchange: .pfx, .p12

              PKCS#10 Certification Request: .p10

              PKCS#7 cert request response: .p7r

              PKCS#7 binary message: .p7b

              .cer/.crt是用于存放證書,它是2進制形式存放的,不含私鑰。

              .pem跟crt/cer的區別是它以Ascii來表示。

              pfx/p12用于存放個人證書/私鑰,他通常包含保護密碼,2進制方式

              p10是證書請求

              p7r是CA對證書請求的回復,只用于導入

              p7b以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰。

              其中,我介紹如何從p12/pfx文件中提取密鑰對及其長度:

              1,首先,讀取pfx/p12文件(需要提供保護密碼)

              2,通過別名(Alias,注意,所有證書中的信息項都是通過Alias來提取的)提取你想要分析的證書鏈

              3,再將其轉換為一個以X509證書結構體

              4,提取里面的項,如果那你的證書項放在第一位(單一證書),直接讀取 x509Certs[0](見下面的代碼)這個X509Certificate對象

              5,X509Certificate對象有很多方法,tain198127網友希望讀取RSA密鑰(公私鑰)及其長度(見http://www.matrix.org.cn/thread.shtml?topicId=43786&forumId=55&#reply),那真是太Easy了,

              X509Certificate keyPairCert = x509Certs[0];

              int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert);

              System.out.println("證書密鑰算法="+keyPairCert.getPublicKey().getAlgorithm());

              System.out.println("證書密鑰長度="+iKeySize);

              提取了他所需要的信息。

              package org.dev2dev.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.X509Certificate;

              import org.dev2dev.security.keytool.X509CertUtil;

              public class LoadKeyFromPKCS12 {

              public static void main(String[] args) {

              try {

              // Open an input stream on the keystore file

              String pfxFileName = " c:\\david.turing.pfx " ;

              String pfxPassword = " 123456 " ;

              File fPkcs12 = null ;

              if (pfxFileName != null ) {

              // Open the file

              fPkcs12 = new File(pfxFileName);

              }

              FileInputStream fis = new FileInputStream(fPkcs12);

              // Create a keystore object

              KeyStore keyStore = null ;

              try

              {

              // Need BC provider for PKCS #12, BKS and UBER

              if (Security.getProvider( " BC " ) == null )

              {

              throw new Exception( " 不能Load入BouncyCastle! " );

              }

              keyStore = KeyStore.getInstance( " PKCS12 " , " 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 " );

              X509Certificate[] x509Certs = X509CertUtil.convertCertificates(certs);

              if (x509Certs == null )

              {

              return ;

              }

              x509Certs = X509CertUtil.orderX509CertChain(x509Certs);

              X509Certificate keyPairCert = x509Certs[ 0 ];

              int iKeySize = X509CertUtil.getCertificateKeyLength(keyPairCert);

              System.out.println( " 證書密鑰算法= " + keyPairCert.getPublicKey().getAlgorithm());

              System.out.println( " 證書密鑰長度= " + iKeySize);

              } catch (Exception e) {

              e.printStackTrace();

              }

              }

              }