4nf*_*3rt 1 java x509certificate x509
我必须编写一个X.509 openssl证书解析器的Java实现,但我有一个问题:我不知道如何获取sha1来验证证书.任何人都可以帮我理解我应该做什么吗?我知道getTBSCertificate()Java 中有一个方法,但我必须为了我的目的重写它.
假设你的意思是sha1,它通常在浏览器和操作系统工具中显示为"指纹" - 你需要1)原始证书作为DER; 然后2)sha1它和3)将其转换为通常的两位数十六进制/冒号分隔的字符串.
至于1; 来自java.security.cert.Certificate的getEncoded()可以帮到你.
至于2:MessageDigest具有该功能.
至于3:我会把它留给你:)
... 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();
}
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.此输出与java keytool的输出匹配.
DW.