
PHP hash
在对接环信客服云验签时遇到一个坑,简单记录下
官方示例如下
第 2 步:根据Client Secret与待加密字符串计算signature
使用hmac-sha256加密,然后对其返回的原始二进制数据进行base64编码。
上述示例的计算结果为: yLgHjb8GckRpZ2uW8kb0qipODRkaFCIBNQsnZ2vhGMo=
JAVA 代码示例:
String secret = "02a0693ba5a57560df1f26a991204cb0"; String message = "POST\\n/api/tenants/5950/rest/channels/20/messages\\n1489490514142\\n705bfbd388d2bf852813fc90e655b5ed"; final SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), "HmacSHA256"); final Mac mac = Mac.getInstance("HmacSHA256"); mac.init(keySpec); final byte[] result = mac.doFinal(message.getBytes()); Base64.getEncoder().encodeToString(result);其他代码示例:Examples of creating base64 hashes using HMAC SHA256 in different languages
PHP官方的示例如下:
$s = hash_hmac('sha256', 'Message', 'secret', true); echo base64_encode($s);
但是结果怎么都对应不上,解决办法,是因为message里面有一个\\n导致的,把单引号改为双引号就好使了,代码如下
$str = "POST\\n/api/tenants/5950/rest/channels/20/messages\\n1489490514142\\n705bfbd388d2bf852813fc90e655b5ed"; $key = '02a0693ba5a57560df1f26a991204cb0'; $sig = hash_hmac("sha256", $str, $key, true); echo $sig = base64_encode($sig);
👁️ 阅读量:0
© 版权声明:本文《PHP hash》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686934600a396827.html。