У меня есть проект со следующим Java-кодом, который работает ...
static String generateHashKey (String apiKey, String msg) throws GeneralSecurityException{
Mac hmacSha256 = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(apiKey.getBytes(), "HmacSHA256");
hmacSha256.init(secretKey);
byte[] bytes = hmacSha256.doFinal(msg.getBytes());
return Hex.encodeHexString(bytes).replace("-","");
}
Я пытаюсь заменить это функцией js, как ...
import crypto from "crypto";
...
const eMessage = crypto.createHmac("SHA256", apiKey).update(message).digest("base64");
Нопохоже, он производит разные хэши.Как обеспечить одинаковый хэш для обоих?Чего мне не хватает?
ОБНОВЛЕНИЕ
За комментарий и ссылку, которые я пробовал
import crypto from "crypto";
import fs from "fs";
import moment from "moment";
import axios from "axios";
import hmacSHA256 from 'crypto-js/hmac-sha256';
import sha256 from 'crypto-js/sha256';
import Base64 from 'crypto-js/enc-base64';
....
const eMessage = Base64.stringify(hmacSHA256(message, key));
const eMessage2 = crypto.createHmac("SHA256", key).update(message).digest("base64");
console.log(eMessage)
console.log(eMessage2)
Обе библиотеки JS возвращают одно и то же (чтоэто хорошо) но это не соответствует Java, что плохо.