我不懂Web Crypto API,我用我一般的编程理解来说,抛砖引玉,错了别怪我。
你的代码我不看了,我只说CF的代码。
这段是根据你的KEY生成key(注意大小写不同),算法是 HMAC-SHA256,请注意,这个key是用于链接签名的。
const secretKeyData = encoder.encode(KEY);
const key = await crypto.subtle.importKey(
"raw",
secretKeyData,
{ name: "HMAC", hash: "SHA-256" },
false,
["sign"]
);
下面这段,只使用HMAC算法, key为上面生成的,然后为链接生成了签名。其实标准HMAC算法里,应该有一个加密方式,这里没有,我猜是crypto api有个默认的算法,比如SHA1。
const mac = await crypto.subtle.sign(
"HMAC",
key,
encoder.encode(stringToSign)
所以,你把KEY直接拿来链接这里(下面这段)做HMAC SHA256是不对的。
总结:
1. 用你的KEY,做SHA256 HMAC,得到链接加密密钥key
2. 用key,对链接做HMAC。 |