Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数字签名中获取公钥_Java_Security_Encryption_Encoding_Cryptography - Fatal编程技术网

Java 从数字签名中获取公钥

Java 从数字签名中获取公钥,java,security,encryption,encoding,cryptography,Java,Security,Encryption,Encoding,Cryptography,我正在从事一个基于java的许可项目。我有一个数字证书文件和生成签名的数据。是否有一些API或方法可以从这些信息中获取公钥?基本上,公钥来自数据和数字证书信息 证书必须引用用于验证数据的密钥id。通过此密钥,您应该能够联系相应的证书颁发机构,并通过提供其id来获取公钥。它也可以从公共存储库中获得 证书颁发机构的id也应出现在此证书上 确实有API可用,但问题是,您使用哪个框架进行数字签名?你知道它的名字吗?你知道证书类型吗?你的问题对我来说很模糊 我有一个数字证书文件和 为其创建签名的数据 产生

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

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

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


确实有API可用,但问题是,您使用哪个框架进行数字签名?你知道它的名字吗?你知道证书类型吗?

你的问题对我来说很模糊

我有一个数字证书文件和 为其创建签名的数据 产生

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

拥有公钥后,您可以使用它来验证签名。

这就是您想要的吗?

如果您的数字签名的格式为PKCS#7-而不是分离,则发送方可能已将证书作为数字签名的一部分包含在内


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

有一个
SignedData
类,该类有一个获取证书的方法。

很抱歉听起来很模糊。让我澄清一下。我有一个数字签名和生成签名的数据。现在我要验证这个签名。我遵循本教程的目的是为了--。但是,我没有所需的公钥。有什么办法可以得到吗?签名不存储签名证书的信息。您还需要证书。但这不是问题,因为签名证书是公共文档,您也应该拥有它
FileInputStream fin = new FileInputStream("PathToCertificate");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();