php sha256 与java区别,PHP和Java中的SHA256

我正在将一些Java代码移植到PHP代码中.在Java中,我有一个哈希SHA256代码,如下所示:

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();

}

在PHP中,我哈希如下:

$hash = hash("sha256", utf8_encode($input));

我用input ="test"运行示例代码.但是,我得到了2个不同的哈希字符串:

Java: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2bb822cd15d6c15b0f0a8

PHP: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

有人可以向我解释为什么以及如何让它们相互匹配?请注意,我无法修改Java实现代码,只能修改PHP.

万分感激!

你可能感兴趣的:(php,sha256,与java区别)