0
我在使用X509證書獲取公鑰時遇到問題。在嘗試生成認證時,我收到「簽名欄無效」錯誤。請幫用來生成密鑰使用CertificateFactory使用生成的證書(X509)獲取公共密鑰
代碼:
public static PublicKey getPublicKey() throws CertificateException,FileNotFoundException {
InputStream certFileIs = new FileInputStream("E:\\TA_Private.pfx");
CertificateFactory certfactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certfactory.generateCertificate(certFileIs);
PublicKey key = cert.getPublicKey();
return key;
}
控制檯輸出:
java.security.cert.CertificateParsingException: signed fields invalid
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1768)
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:196)
at sun.security.provider.X509Factory.engineGenerateCertificate(X509Factory.java:97)
at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)
at Keygenerator.getPublicKey(Keygenerator.java:45)
at KeyMain.main(KeyMain.java:20)
爲什麼在查詢isCertificateEntry(別名)時爲別名返回false?請給出一個解釋。謝謝.. – DJphy
一個KeyStore是一個通用的容器。它可以包含證書,也可以包含密鑰。在迭代所有別名時,您需要檢查存儲在該別名下的對象的類型。 – Jcs
但在我的情況下,當我打印獲取的別名我發現我有兩個別名,他們都相同(字母數字值)。如果我把這個支票說isCertificate我不能得到關鍵因爲它返回false。所以我刪除了如果檢查,並檢查它我得到一些值,當我檢索key.getEncoded()我得到了一些294字節。那麼這是什麼294字節表示... – DJphy