从数字签名中获取公钥

时间:2011-06-13 12:20:45

标签: java security encryption encoding cryptography

我正在开发基于Java的许可项目。我有一个数字证书文件和生成签名的数据。是否有一些API或手段从这些信息中获取公钥?基本上公钥来自数据和数字证书信息。

4 个答案:

答案 0 :(得分:2)

如果数字签名的格式为PKCS#7 - 分离,则发件人可能会将证书作为数字签名的一部分包含在内。

您需要解析签名才能获得证书。

答案 1 :(得分:1)

Bouncy Castle API有一个SignedData类,其中包含获取证书的方法。

答案 2 :(得分:0)

证书必须带有用于验证数据的密钥ID的引用。从此密钥,应该能够联系相应的证书颁发机构并通过提供其ID来获取公钥。它也可以从公共存储库中获得。

证书颁发机构的ID也应出现在此证书上。

有些API可以肯定,但问题是,您使用哪种框架进行数字签名?你有它的名字吗?你知道证书类型吗?

答案 3 :(得分:0)

你的问题很模糊恕我直言。

  

我有一个数字证书文件和   签名所针对的数据   产生

如果证书文件具有用于验证签名的公钥,则可以使用标准java apis加载它(假设X509证书)。

FileInputStream fin = new FileInputStream("PathToCertificate");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();

获得公钥后,您可以使用它来验证签名 这是你想要的吗?