我正在尝试使用Java读取远程主机的证书。我想获得编码类型。我打字:
System.out.println("The encoding is: "+ x509Cert.getEncoded().toString());
我得到的输出是:
The encoding is: [B@597c3925
有什么问题?
编辑:x509Cert是X509Certificate类型的对象。
答案 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)并添加熟悉的开始和结束行。