簡體   English   中英

X509證書獲得PublicKey

[英]X509 certificate get PublicKey

我有一個用Base64編碼的X509證書(RSA)字符串值(以MII開頭)。

我使用Base64對其進行解碼並創建X509證書。

  public X509Certificate getCertificateX509(CertificateFactory factory, InputStream input) throws XX {
    try {
      return (X509Certificate) factory.generateCertificate(input);
    } catch (CertificateException e) {
      throw new XX("");
    }
  }

  public CertificateFactory getCertificateFactoryX509() throws XX {
    try {
      return CertificateFactory.getInstance("X.509");
    } catch (CertificateException e) {
      throw new XX("");
    }
  }

我不明白的是,當我執行x509.getPublicKey().getEncoded()我得到了一個字節數組。

編碼為Base64,我得到一個以MII開頭的新字符串(與第一個字符串不同),我認為這不是PublicKey嗎? 僅證書以MII開頭不是嗎?

謝謝

我得到的證書是: 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

和x509.PublicKey.getEncoded()以Base64: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwT3CPpum29ZRqyPq2Rpl4/GpRfE9njN1kje6iOUEIvxoWQ5qB/H8VFFkph7U9mb/QK+7Rt/9d/dCTdru2BfMPskbXYGphetQDY3e8DEQCoRXNnYy2dzkkj1uJWuLFEwZwEH7ZHpEP9HnWWoEBEu0r6jCJBniJRrzU8UHKZ5S5fkG/BOcvAJIdCyS1HeCrOaQ47POixi7bd0P0+sfXIjSlY6ef8W8C3kR3o+mVMZozkC8PApoQzbCWMsFp1QGlLuSkeP+FXNuRHm1r6NX1UVDsS7+S+x8dXc48VqVxwTG5GAlwShQ69pTBqRsY0EPNeVYcmpdZ0/d4tufd5yIiVRvsQIDAQAB

沒錯

字符串“ MII”是以base64字符串格式開頭的。

如果需要字節的公共密鑰僅使用此代碼:

byte[] public = x509.getPublicKey();

並獲取公鑰字符串:

byte[] public = x509.getPublicKeyString();

此函數為您返回公鑰作為字節。

但是使用.getEncoded()函數將返回公鑰字節的base64。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM