我只想看看我是否做对了。 I have created a stackblitz demo here.。
我想对对象进行数字签名。我认为这样做的方法是:
1)创建对象
const o = { title: 'All dogs go to heaven', publishDate: new Date(),
2)JSON。使用规范的json实现对其进行字符串化
const s = stringify(o); //canonical json implementation of stringify
3)将其通过CryptoJS Hmac256和Base64函数传递,如下所示:
console.log(enc.Base64.stringify(HmacSHA256(s, 'secret')));
我认为这应该适用于任何对象,对吗? (不管它是否像这里的对象一样简单,都是包含应用程序状态的对象,该状态可能为兆字节。)
我问的部分原因是,这个Auth0 article产生了这样的信号:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
颠倒函数调用的顺序(最后一次调用HMACSHA256)。