Узел.в JS код HMAC SHA256 с помощью base64 строки

Я делаю приложение на java и сервер с узлом и в качестве метода аутентификации я хотел бы сравнить две строки.

в 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");
}

но я все еще довольно новыми для узла.JS и я пытаюсь выяснить, как сделать то же самое там. Вот что у меня есть:--5-->

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

как я могу заставить их сделать то же самое? Мне все еще не хватает соли в узел.js. Предложения?

EDIT: Ответ ниже помог мне найти решение. Если у других пользователей 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');

1 ответов


Если вы хотите использовать HMAC, вам нужно использовать метод crypto.createHmac(algorithm, key).

Мне все еще не хватает соли в узел.js

Кажется, что вы не используете соль в ваш Java-код...