X.509证书和X509EnpredKeySpec具有完全不同的结构,并且尝试将证书解析为密钥是行不通的。Java
X509EnpredKeySpec实际上是X.509的SubjectPublicKeyInfo,它只是证书的一小部分。
您需要做的是读取并解析证书,然后从证书中提取公钥。我不知道执行此操作的BC方法,但是标准的SunJCE
CertificateFactory可以做到这一点(并且可以读取PEM或DER进行引导),如下所示(调整错误清理和错误处理以适应情况):
CertificateFactory fact = CertificateFactory.getInstance("X.509");FileInputStream is = new FileInputStream (args[0]);X509Certificate cer = (X509Certificate) fact.generateCertificate(is);PublicKey key = cer.getPublicKey();


