I'm porting some Java code to PHP code. In Java I have a hash SHA256 code as below:
public static String hashSHA256(String input)
throws NoSuchAlgorithmException {
MessageDigest mDigest = MessageDigest.getInstance("SHA-256");
byte[] shaByteArr = mDigest.digest(input.getBytes(Charset.forName("UTF-8")));
StringBuilder hexStrBuilder = new StringBuilder();
for (int i = 0; i < shaByteArr.length; i++) {
hexStrBuilder.append(Integer.toHexString(0xFF & shaByteArr[i]));
}
return hexStrBuilder.toString();
}
In PHP, I hash as below:
$hash = hash("sha256", utf8_encode($input));
I run the sample code with both input = "test". However, I got 2 hash strings which are not the same:
Java: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2bb822cd15d6c15b0f0a8
PHP: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
Can someone explain to me why and how to get them match each other? Please note that I cannot modify the Java implementation code, only to modify PHP.
Really appreciate!