我使用第三方工具来验证签名并从签名中获取证书详细信息(如序列号、CA 等)。此实用程序的问题在于它已获得许可并且只能在某些机器上运行。
我可以使用简单的 java 或 .net 代码验证数据签名吗?(而不是使用付费应用程序)。我没有从签名数据中提取证书信息的私钥。
或者,如果我有 pfx 文件,有人可以建议使用 java 或 .net 提取证书详细信息的示例代码。来自签名数据。
数据使用非对称加密进行签名。
最佳答案
从证书中提取详细信息:
- 制作一个保存证书数据的字符串。只需确保它有
-----BEGIN CERTIFICATE-----
开始和-----END CERTIFICATE-----
结束。 - 现在在 Java 中使用以下代码提取证书详细信息。
InputStream inStream = new ByteArrayInputStream(certString.toString().getBytes("UTF-8"));
BufferedInputStream bis = new BufferedInputStream(inStream);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
证书 cert = cf.generateCertificate(bis);
X509Certificate xCert = (X509Certificate)cert;
System.out.println("证书类型:"+cert.getType());
System.out.println("公钥:\n"+cert.getPublicKey());
尝试{
System.out.println("签名算法"+xCert.getSigAlgName());
System.out.println("IssuerDN : "+xCert.getIssuerDN());
System.out.println("序列号:"+xCert.getSerialNumber());
System.out.println("SubjectDN : "+xCert.getSubjectDN());
}catch(异常表达式){
:
}
关于java - 数字签名 : sample code for verification and for extracting certification information,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148746/