需要与此特定实现的 crypto.createHmac 方法等效的浏览器

问题描述

所以,我有一段用 Node.js 编写的代码

crypto.createHmac('sha256',secret).update(orderedParams).digest('hex')

我希望在浏览器中引入这段代码,但这不起作用,因为浏览器不支持“crypto”库。有人可以帮我在浏览器中重新创建相同的方法吗?

解决方法

大多数加密库都可以确定 HMAC,例如CryptoJSWebCrypto API

以下示例使用 CryptoJS:

var secret = 'my secret';
var orderedParams = 'the ordered params';

// Short
var hmac3 = CryptoJS.HmacSHA256(orderedParams,secret).toString();
console.log(hmac3.replace(/(.{48})/g,'$1\n'));

// Progressive
var hmac2 = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256,secret).update(orderedParams).finalize().toString();
console.log(hmac2.replace(/(.{48})/g,'$1\n'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>