将字符串转换为Sha-256哈希

我想将String转换为SHA-256哈希。 我正在使用此代码:

String text = "YOLO"; MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(text.getBytes("UTF-8")); System.out.println(hash.toString()); 

问题是,当我启动程序时,它会打印出来

[B @ 28d93b30

这是为什么,怎么解决这个问题?

提前致谢,

Fihdi

正如其他人提到的那样,你使用默认的toString()方法,它只输出类名和哈希码

如果你想从字节数组的内容中取出hex打印,请尝试从Apache Commons获取… Hex.encodeHexString(byte []数据) 。

另外如何在Java中将字节数组转换为hex字符串? 有一些没有库的例子。

要将字节打印为hex(而不是该结果, 如何在不获取“SomeType @ 2f92e0f4”的情况下打印我的Java对象中进行了解释? ),只需运行:

 System.out.println((new HexBinaryAdapter()).marshal(hash)); 

在JAVA中,数组不会覆盖Object.toString() 。 因此, hash.toString()不返回数组内容的表示forms,而是返回数组本身的表示forms。 显然,这种数组表示不是很有用。 dfault toString()实现返回

  getClass().getName() + '@' + Integer.toHexString(hashCode())