java - Node.js Hmac SHA256 base64 的字符串

标签 java android node.js

我正在用 java 制作一个应用程序和一个带有 Node 的服务器,作为一种身份验证方法,我想比较两个字符串。

在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 中的盐。 有什么建议吗?

编辑: 下面的答案帮助我找到了解决方案。如果其他 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");
}

这个在 Node 中:

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

最佳答案

你可以使用这一行:

let test = crypto.createHmac('sha256', "key").update("json").digest("base64");

最后转换为base64。

关于java - Node.js Hmac SHA256 base64 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004530/

相关文章:

java - 为什么我不能向我的 JComboBox 添加多个数组?

android - 在 Kotlin 中单击外部时如何关闭 Bottom Sheet fragment ?

node.js - 为什么会有这种不同的行为?

java - 如何根据值对Hashmultimap进行排序?

java - ZipInputStream(BufferedInputStream, Charset) 未定义

java - 鉴于我只有类的完全限定名称作为字符串,我如何知道一个类是否是另一个类的父类(super class)?

android - 连接的设备未出现在 AVD 管理器中 (linux)

java - 如何为 imageview android 提供色调颜色?

node.js - Nodejs部署的最佳实践 - 直接将node_modules移动到服务器或运行npm install命令

javascript - 正则表达式对我想做的事情是否正确?