首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android端的HmacSHA1和php端的结果不同

android端的HmacSHA1和php端的结果不同
EN

Stack Overflow用户
提问于 2014-03-28 15:14:22
回答 1查看 892关注 0票数 1

php代码:

代码语言:javascript
复制
$secret = "mtHa5YRivVrQ/ZNtoe2oxg==";
$var3 = 11112222;
$signature  = hash_hmac('sha1', $var3, $secret, true);
$data = base64_encode($signature);
echo $data;

输出: Prpji0PmtBsmDo1grDbXMJnJUTs=

Android代码:

代码语言:javascript
复制
String data = 11112222;
String secret = mtHa5YRivVrQ/ZNtoe2oxg==
SecretKeySpec key = new SecretKeySpec((secret).getBytes("UTF-8"), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);
byte[] bytes = mac.doFinal(data.getBytes("UTF-8"));
return new String(Base64.encodeToString(bytes, Base64.DEFAULT));

输出: q85cCMvVB7PX39upoT5/+9J0bWM=

我不知道wrong.please帮了我什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 15:25:35

您的密钥Base64已被编码,因此您必须首先将其解码为普通字节数组:

PHP:

代码语言:javascript
复制
$secret64 = "mtHa5YRivVrQ/ZNtoe2oxg==";
$secret = base64_decode($secret64);
$data = "11112222";
$hmac  = hash_hmac('sha1', $data, $secret, true);
$hmac64 = base64_encode($signature);
echo $hmac64;

爪哇:

代码语言:javascript
复制
String data = "11112222";
String secret64 = "mtHa5YRivVrQ/ZNtoe2oxg==";
byte[] secret = Base64.decode(secret64, Base64.DEFAULT);
SecretKeySpec key = new SecretKeySpec(secret, "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(key);
byte[] bytes = mac.doFinal(data.getBytes("UTF-8"));
return Base64.encodeToString(bytes, Base64.DEFAULT);

结果:

代码语言:javascript
复制
LdKcsVyMX0BAhugGFEr4dAlFfe8=
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22716659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档