When I reproduce a SHA2 hash via the following code:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.digest("A".getBytes("UTF-8"));
it gives me a byte array, which is: 85,-102,-22,-48,-126,100,-43,121,93,57,9,113,-116,-35,5,-85,-44,-107,114,-24,79,-27,85,-112,-18,-13,26,-120,-96,-113,-33,-3
But when I reproduce same hash via MySQL it gives me a string which is: 5cfe2cddbb9940fb4d8505e25ea77e763a0077693dbb01b1a6aa94f2
How can I convert tha Java's result so that I can compare it with MySQL's result?
Integer.toHexString(0XFF & i)
must be replaced withString.format("%02x", 0XFF & i)
, otherwise it only produces a 1 character output, while 2 characters are expected.First check out your DB result it looks like your initial hash is actually a SHA-224 not SHA-256:
Instead of:
From there you're on the right track you just need to convert the byte[] output to a hex string.
Output: