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

时间:2015-06-06 20:15:02

标签: java arrays string hash sha

我想将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

4 个答案:

答案 0 :(得分:2)

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

如果你想要一个十六进制打印出来的字节数组的内容尝试... 来自Apache Commons的Hex.encodeHexString(byte[] data)

How to convert a byte array to a hex string in Java?还有一些没有库的例子。

答案 1 :(得分:1)

要将字节打印为十六进制(而不是How do I print my Java object without getting "SomeType@2f92e0f4"?中说明的那个结果),只需运行:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我也遇到过此类问题,然后以这种方式解决。

~/.ssh/config