Преобразование crypto hmac в строку crypto-js hmac - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь выполнить процесс преобразования секретной строки hmac, чтобы позволить мне проверить мой API в почтальоне. Почтальон поставляется с предустановленной cryptojs. Это процесс, который я получил на своем тестовом сервере с использованием crypto:

const crypto = require('crypto');
const generateHmac = (privateKey, ts) => {
    const hmac = crypto.createHmac('sha256', privateKey);
    hmac.update(ts);
    const signature = hmac.digest('hex');
    return signature;
}

Это не соответствует строке, сгенерированной cryptojs в почтальоне:

const createHmacString = (privateKey, ts) => {
    const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
    return hmac;
}

Не уверен, что я здесь делаю не так. Заранее спасибо!

1 Ответ

1 голос
/ 20 апреля 2019

Хорошо, наконец-то понял это - crypto-js не предоставляет фактические байты, поэтому необходимо кодировать все:

const createHmacString = (privateKey, ts) => {
    const key = CryptoJS.enc.Utf8.parse(privateKey)
    const timestamp = CryptoJS.enc.Utf8.parse(ts)
    const hmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(timestamp, key))

    //  const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
    return hmac;
}

let ts = new Date().getTime();
const signature = createHmacString("your-private-key", ts);
...