base64中的PHP SHA-256校验和与Java的校验和匹配

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

我有一个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($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=