2011-05-27 31 views
5

我使用第三方工具來驗證簽名並從簽名中獲取證書詳細信息(如序列號,CA等..)。這個實用程序的問題是它是許可的,只能在某些機器上運行。數字簽名:用於驗證和提取認證信息的示例代碼

我可以使用簡單的java或.net代碼驗證數據簽名嗎?(而不是使用付費應用程序)。我沒有私鑰從簽名數據中提取證書信息。

或者如果有人可以在java或.net中提示示例代碼來提取證書詳細信息,如果我有pfx文件。從簽署的數據。

數據使用非對稱加密進行簽名。

+0

2個投票,但只有1個有用但不完整的答案:( – 2011-06-16 04:29:17

回答

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){ 
     : 
} 

+0

你的代碼似乎真的很有幫助,但我只有簽名和數據,我沒有證書,證書是否與簽名一起出現?如果是,你能告訴我如何我可以從簽名中提取證書嗎? – 2011-06-10 03:58:07

1

如果您在PFX文件,那麼這可能包含將被要求驗證簽名的公鑰證書。或者,如果您的簽名是PKCS#7簽名,那麼簽名本身將保存數據,簽名和證書。假定PKCS#7未被分離。

您需要詢問您的簽名者,他如何將他的證書轉移到驗證中。