从证书中获取公钥

问题描述

| 我正在尝试使用以下方法获取证书的公钥:
FileInputStream fin = new FileInputStream(\"PathToCertificate\");
CertificateFactory f = CertificateFactory.getInstance(\"X.509\");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
但我收到以下错误:
Exception in thread \"main\" java.lang.ClassCastException: sun.security.x509.X509CertImpl cannot be cast to codec.x509.X509Certificate
        at sergas_testcertificates.Main.main(Main.java:54)
有谁知道这个错误是关于什么的? 提前致谢     

解决方法

        您为
X509Certificate
导入的类错误。 您可能会寻找
java.security.cert.X509Certificate
而不是
codec.x509.X509Certificate
。     ,        
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
由于您仅提取公共密钥,因此可以使用证书类。工厂类将决定要返回的证书类型。
Certificate certificate = f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
如果出于其他原因需要强制转换,请检查导入并进行更改,X509Certificate应该来自javax.security.cert。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...