如何在Java中获取x509证书编码类型

时间:2012-10-28 13:18:08

标签: java

我正在尝试使用Java读取远程主机的证书。我想获得编码类型。我打字:

    System.out.println("The encoding is: "+ x509Cert.getEncoded().toString());

我得到的输出是:

The encoding is: [B@597c3925

有什么问题?

编辑:x509Cert是X509Certificate类型的对象。

2 个答案:

答案 0 :(得分:0)

只是为了让您了解问题所在:从x509Cert.getEncoded()获取的对象(在本例中为数组)不会覆盖toString方法,因此默认为{{1 },如getClass().getName() + '@' + Integer.toHexString(hashCode()) - 类中所定义。

就像说明一样,当你做

Object

您实际上不需要致电"some string" + someObj.toString() - 它将自行调用。你可以做到

toString

答案 1 :(得分:0)

Certificate.getEncoded返回byte[],因为它为您提供证书数据的二进制表示(在X509证书的情况下为DER),而不是文本。如果你想要PEM格式,那就是使用MIME样式base 64编码的DER表格(你可以使用Apache commons codec)并添加熟悉的开始和结束行。