Узел.в 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-код...