我正在尝试使用 Java 读取远程主机的证书。我想获得编码类型。我输入:
System.out.println("The encoding is: "+ x509Cert.getEncoded().toString());
我得到的输出是:
The encoding is: [B@597c3925
问题是什么 ?
编辑:x509Cert 是 X509Certificate 类型的对象。
我正在尝试使用 Java 读取远程主机的证书。我想获得编码类型。我输入:
System.out.println("The encoding is: "+ x509Cert.getEncoded().toString());
我得到的输出是:
The encoding is: [B@597c3925
问题是什么 ?
编辑:x509Cert 是 X509Certificate 类型的对象。
Certificate.getEncoded
返回byte[]
,因为它为您提供了证书数据的二进制表示(在 X509 证书的情况下为 DER),而不是文本。如果您希望它采用 PEM 格式,那么这是使用 MIME 样式 base 64 编码的 DER 表单(您可以为此使用Apache commons 编解码器)并添加了熟悉的开始和结束行。
只是为了让您了解问题所在:从中获取的对象(在本例中为数组)x509Cert.getEncoded()
不会覆盖该toString
方法,因此它默认为-classgetClass().getName() + '@' + Integer.toHexString(hashCode())
中定义的。Object
就像一个注释,当你这样做时
"some string" + someObj.toString()
您实际上不需要调用toString
- 它会自行调用。你可以做
"some string" + someObj