2

I want to convert a String to a SHA-256 Hash. I am using this code:

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

The problem is, when I start the program, it prints

[B@28d93b30

Why is this, and how can solve this?

Thanks in advance,

Fihdi

2

4 Answers 4

2

As others have mentioned, you're using the default toString() method which simply outputs the class name and hashcode

If you want a hex print out of the contents of the byte array try... Hex.encodeHexString(byte[] data) from Apache Commons.

Also How to convert a byte array to a hex string in Java? has some examples for doing this without a library.

Sign up to request clarification or add additional context in comments.

Comments

1

To print the bytes as hex (instead of that result, explained in How do I print my Java object without getting "SomeType@2f92e0f4"?), simply run:

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

Comments

0

In JAVA, arrays do not override Object.toString(). Therefore, hash.toString() does not return a representation of the contents of the array, but rather a representation of the array itself. Apparently, this representation of an array is not very useful. The default toString() implementation returns

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

Comments

0

I have also faced this type of issue and then solve in this way.

String text = "YOLO";
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(text.getBytes(StandardCharsets.UTF_8));
String encoded = DatatypeConverter.printHexBinary(hash);        
System.out.println(encoded.toLowerCase());

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.