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代码中的盐