質問

php code:

$secret = "mtHa5YRivVrQ/ZNtoe2oxg==";
$var3 = 11112222;
$signature  = hash_hmac('sha1', $var3, $secret, true);
$data = base64_encode($signature);
echo $data;

Output : Prpji0PmtBsmDo1grDbXMJnJUTs=

Android code:

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

Output : q85cCMvVB7PX39upoT5/+9J0bWM=

Don't know whats wrong.please help me out

役に立ちましたか?

解決

You have secret key Base64 encoded, so you have first to decode it to plain byte array:

PHP:

$secret64 = "mtHa5YRivVrQ/ZNtoe2oxg==";
$secret = base64_decode($secret64);
$data = "11112222";
$hmac  = hash_hmac('sha1', $data, $secret, true);
$hmac64 = base64_encode($signature);
echo $hmac64;

Java:

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

Result:

LdKcsVyMX0BAhugGFEr4dAlFfe8=
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top