base64中的PHP SHA-256校验和与Java的校验和匹配
我有一个java程序,它计算SHA-256校验和如下。例如,如果我提供输入abcd123ABCD00-4000,它将输出0QtyIu4B+lU+TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM=。它也符合标准 但是,我使用的PHP代码与之不匹配 PHP代码:base64中的PHP SHA-256校验和与Java的校验和匹配,java,php,sha,Java,Php,Sha,我有一个java程序,它计算SHA-256校验和如下。例如,如果我提供输入abcd123ABCD00-4000,它将输出0QtyIu4B+lU+TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM=。它也符合标准 但是,我使用的PHP代码与之不匹配 PHP代码: $s = 'abcd123ABCD00-4000'; $signature = base64_encode(hash_hmac("sha256", $s, True)); print base64_encode($sign
$s = 'abcd123ABCD00-4000';
$signature = base64_encode(hash_hmac("sha256", $s, True));
print base64_encode($signature);
输出:TWPRM1PEWXPAVFL4TUROALLQTXDPRFv6WVRNU5xVTRNRGXOKRJMU1xWTVNREK1TNPBEU4YSXHAR0PSTW1ZMK16Y3HPRE01WLDFELKYSHOALJRWXC9PQ==
Java代码:
private static String getSHA256Hash(String text) {
String hash = null;
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-256");
md.update(text.getBytes("UTF-8"));
byte[] shaDig = md.digest();
// hash = Hex.encodeHexString(shaDig);
hash = Base64.encodeBase64String(shaDig);
} catch (NoSuchAlgorithmException ex) {
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return hash;
}
输出:0QtyIu4B+lU+TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM=
在这里,我想要的是在PHP中获得等效的结果(即更改PHP代码以匹配Java程序的结果[我无法更改Java代码])。任何帮助都将不胜感激
hash_hmac和普通的sha256 hash不一样!嗯,这是很难学会的!
$s = 'abcd123ABCD00-4000';
$signature = base64_encode(hash("sha256", $s, True));
print $signature; // 0QtyIu4B+lU+TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM=