hash_hmac analog for Java

时间:2014-07-03 15:31:33

标签: java php md5 hmac

我需要在Java中获取字符串的哈希值,与PHP的hash_hmac相同。

这是我的PHP示例:

$secret_key = 'foo';
$sig_str = 'bar';
$hash = hash_hmac('md5', $sig_str, $secret_key); 

这就是我为Java发现的:

SecretKeySpec keySpec = new SecretKeySpec("foo".getBytes(), "HmacMD5");
Mac mac = Mac.getInstance(keySpec.getAlgorithm());
mac.init(keySpec);
String result = new BASE64Encoder().encode(mac.doFinal("bar".getBytes()));

但结果不同。我错过了什么?

1 个答案:

答案 0 :(得分:0)

在此处找到解决方案:java equivalent to php's hmac-SHA1

问题出在BASE64Encoder中。使用

for (byte b : digest) {
    System.out.format("%02x", b);
}
System.out.println();

new BigInteger(digest).toString(16);

代替。