Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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中从X.509 openssl证书中提取sha1_Java_X509certificate_X509 - Fatal编程技术网

Java中从X.509 openssl证书中提取sha1

Java中从X.509 openssl证书中提取sha1,java,x509certificate,x509,Java,X509certificate,X509,我必须编写一个X.509 openssl证书解析器的Java实现,但我有一个问题:我不知道如何获得用于证书验证的sha1。 有人能帮我理解我该做什么吗?我知道Java中有一个方法gettbCertificate(),但我必须重写它以达到我的目的。假设你指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——你需要1)原始证书作为密码;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串 关于1;java.security.cert.Certificate中的getEncod

我必须编写一个X.509 openssl证书解析器的Java实现,但我有一个问题:我不知道如何获得用于证书验证的sha1。
有人能帮我理解我该做什么吗?我知道Java中有一个方法
gettbCertificate()
,但我必须重写它以达到我的目的。

假设你指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——你需要1)原始证书作为密码;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串

关于1;java.security.cert.Certificate中的getEncoded()将为您提供这一信息

至于2:MessageDigest有这个功能

至于第三条:我将把它留给你:)

我们应该做到这一点。此输出与java keytool的输出相匹配


Dw.

假设您指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——您需要1)原始证书作为凭证;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串

关于1;java.security.cert.Certificate中的getEncoded()将为您提供这一信息

至于2:MessageDigest有这个功能

至于第三条:我将把它留给你:)

我们应该做到这一点。此输出与java keytool的输出相匹配


Dw.

看看这里:看看这里:这确实是指纹的正确答案。我猜问题也可能是关于验证签名。。。这里有几个最近的相关问题:而且,这确实适用于指纹。我猜问题也可能是关于验证签名。。。这里有几个最近的相关问题:和。
... someFoo(X509Certificate cert) {
    MessageDigest sha1 = MessageDigest.getInstance("SHA1");
    System.out.println("  Subject " + cert.getSubjectDN());
    System.out.println("   Issuer  " + cert.getIssuerDN());
    sha1.update(cert.getEncoded());
    System.out.println("   sha1    " + toHexString(sha1.digest()));
    System.out.println();
  }