我必须将一些使用jsSHA的浏览器代码移植到NodeJS上,并且希望使用crypto模块,但是由于某些原因,当我认为这两个代码应该相同时,这两段代码会产生不同的结果:

let s1 = crypto.createHmac('sha1', '1234').update('4321').digest('base64');

var hmacObj = new jsSHA("SHA-1", "TEXT");
hmacObj.setHMACKey('1234', "B64")
hmacObj.update('4321')
let s2 = hmacObj.getHMAC("B64");

console.log(`${s1} <===> ${s2}`);
// EL8JVAKqxIzgv0ELy/9zDxzlKIc= <===> RvRFQNm8hvN+vwvp8zNxs/z6P2s=


谢谢你的帮助。

最佳答案

这给出了与您的jsSHA代码相同的结果:

crypto.createHmac('sha1', new Buffer('1234', 'base64'))
      .update('4321')
      .digest('base64')

09-08 06:02