数字签名:用于验证和提取认证信息的示例代码

Ami*_*pta 5 .net java digital-certificate digital-signature

我使用第三方工具来验证签名并从签名中获取证书详细信息(如序列号,CA等).此实用程序的问题是它已获得许可,仅适用于某些计算机.

我可以使用简单的java或.net代码验证数据签名吗?(而不是使用付费应用程序).我没有私钥从签名数据中提取证书信息.

或者,如果我有pfx文件,有人可以在java或.net中建议示例代码以提取证书详细信息.来自签名数据.

数据使用非对称加密进行签名.

noq*_*ery 5

从证书中提取详细信息:

  1. 创建一个保存证书数据的字符串.确保它-----BEGIN CERTIFICATE-----在开始和-----END CERTIFICATE-----结束时都有.
  2. 现在使用Java中的以下代码来提取证书详细信息.

InputStream inStream = new ByteArrayInputStream(certString.toString().getBytes("UTF-8"));
BufferedInputStream bis = new BufferedInputStream(inStream);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate cert = cf.generateCertificate(bis);
X509Certificate xCert = (X509Certificate)cert;

System.out.println("Certificate Type: "+cert.getType());
System.out.println("Public Key: \n"+cert.getPublicKey());
try{
      System.out.println("Signature Algorithm"+xCert.getSigAlgName());
      System.out.println("IssuerDN : "+xCert.getIssuerDN());
      System.out.println("Serial Number : "+xCert.getSerialNumber());
      System.out.println("SubjectDN : "+xCert.getSubjectDN());
}catch(Exception exp){
      :
}
Run Code Online (Sandbox Code Playgroud)


Raj*_*Raj 1

如果您有 PFX 文件,那么它可能包含验证签名所需的公钥证书。

或者,如果您的签名是 PKCS#7 签名,则签名本身将保存数据、签名和证书。假设 PKCS#7 未分离。

您需要询问您的签名者,他如何传输他的证书进行验证。