У меня есть код nodejs, который генерирует подпись на основе текущей метки времени:
var crypto = require('crypto');
var nonce = new Date().getTime();
var signature = function(nonce, secretKey) {
var signature = crypto.createHmac('sha256', Buffer.from(secretKey, 'utf8')).update(Buffer.from(nonce, 'utf8')).digest('base64');
return signature;
}
Я конвертирую этот код в браузер js, но мне не удалось выполнить мою задачу. Я ссылался на эту ссылку: nodejs crypto module vs crypto-js, но не работал.
если nonce=1518440585425
и secret=9IeVABv94EQBnT6Mn73742kBZOmzFpsM+c62LU9b/h4=
он должен дать эту signature=blI2ILR8MW4ParkT4R1vvVOXF42gJOAVPgEJtZT7Ivo=
nodejs
генерации подписи nodejs
будет эквивалентен этому коду crypto js
:
var secret="9IeVABv94EQBnT6Mn73742kBZOmzFpsM+c62LU9b/h4=";
var nonce = "1518440585425";
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,secret);
hmac.update(nonce);
var hash = hmac.finalize();
var signature = hash.toString(CryptoJS.enc.Base64);
console.log(signature); //blI2ILR8MW4ParkT4R1vvVOXF42gJOAVPgEJtZT7Ivo
Вам нужно будет включить эти js в ваш HTML файл:
<script src="components/core.js"></script>
<script src="components/hmac.js"></script>
<script src="components/sha256.js"></script>
<script src="components/enc-base64.js"></script>