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

问题描述 投票:2回答:4

我想将字符串转换为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

java arrays string hash sha
4个回答
2
投票

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

如果要从字节数组的内容中进行十六进制打印,请尝试...Hex.encodeHexString(byte[] data),来自Apache Commons。

[How to convert a byte array to a hex string in Java?也有一些没有库的示例。


1
投票

要以十六进制形式显示字节(而不是结果,在How do I print my Java object without getting "SomeType@2f92e0f4"?中进行说明),只需运行:

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

0
投票

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

toString()

0
投票

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

 getClass().getName() + '@' + Integer.toHexString(hashCode())
© www.soinside.com 2019 - 2024. All rights reserved.