Я пытаюсь создать HMAC сообщения. Алгоритм генерации HMAC - SHA256. Проблема в том, что у меня есть ключ с кодировкой base64 (общий секрет). Как я могу расшифровать эту тайну, чтобы получить требуемое HMACсоздание HMAC в Nodejs с секретным кодом base64
код примера:
var hmac = require('crypto').createHmac('SHA256', "SOME_BASE64_ENCODED_SHARED_SECRET").update("MESSAGE").digest('base64');
Этот HMAC отправляется на службу Java. Как это делает HMAC поколение выглядит следующим образом:
Mac mac = Mac.getInstance("HmacSha256");
SecretKey sharedKey = new SecretKeySpec(Base64.getDecoder().decode("SOME_BASE64_ENCODED_SHARED_SECRET"), "TlsPremasterSecret");
mac.init(sharedKey);
byte[] messageBytes = "MESSAGE".getBytes("UTF-8");
byte[] expectedHmac = mac.doFinal(messageBytes);
String hmac = Base64.getEncoder().encodeToString(expectedHmac));
Теперь, HMACs порожденные моей nodejs код не совпадает с кодом службы Java. Как решить эту проблему?
ли вы попробовать * декодирование * кодировку base64 секретный перед передачей его в 'createHmac()' (например, 'крипт. createHmac ('SHA256', новый буфер ('base64-encoded-secret', 'base64')). update (... ')? – mscdex
Yay! Это сработало! Спасибо тонну :) – nobrains