PHP SHA-256检查base64中的和以匹配Java

 阳吉登 发布于 2023-01-09 18:00

我有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); 

输出:TWpRM1pEWXpaVFl4TURoallqTXdPRFV6WVRrNU5XVTRNRGxoWkRJMU1XWTVNREk1TnpBeU4ySXhaR0psTW1ZMk16Y3hPRE01WldFelkySXhOalJrWXc9PQ ==

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代码].任何帮助表示赞赏

1 个回答
  • 如果您使用的hash()和使用Base64编码,一旦你得到同样的结果.

    $s = 'abcd123ABCD00-4000';
    $signature = base64_encode(hash("sha256", $s, True)); 
    print  $signature; // 0QtyIu4B+lU+TLqM/zfJz5ULVpyXgfLRs5mKXCQvbHM=
    

    2023-01-09 18:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有