Node.js Hmac SHA256 base64的string

我正在做一个应用程序在Java和一个服务器与节点和身份validation方法,我想比较两个string。

在Java中,我正在这样做:

try { String secret = "secret"; String message = "Message"; Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256"); sha256_HMAC.init(secret_key); String hash = Base64.encodeBase64String(sha256_HMAC.doFinal(message.getBytes())); System.out.println(hash); } catch (Exception e){ System.out.println("Error"); } 

但是我对node.js仍然很陌​​生,我试图弄清楚如何在那里做同样的事情。 这是我得到的:

 var crypto = require('crypto'); var sha256 = crypto.createHash('HMAC-SHA256').update('Message').digest("base64"); 

我怎样才能让他们做同样的事情? 我仍然在node.js中缺lesssalt。 build议?

编辑:下面的答案帮助我find解决scheme。 如果其他Android用户有这个问题,那么这个代码为我工作:

 try { String secret = "secret"; String message = "Message"; Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256"); sha256_HMAC.init(secret_key); byte[] s53 = sha256_HMAC.doFinal(message.getBytes()); String hash = Base64.encodeToString(s53, Base64.DEFAULT); Log.e("beadict", hash); } catch (Exception e){ System.out.println("Error"); } 

而这个节点:

 var crypto = require('crypto'); var hash = crypto.createHmac('SHA256', "secret").update("Message").digest('base64'); 

如果你想使用HMAC,那么你需要使用crypto.createHmac(algorithm, key)

我仍然在node.js中缺lesssalt

看起来你不使用你的Java代码中的盐