如何获得node.js中字符串的SHA 1散列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (49)

我正在尝试创建一个用node.js编写的websocket服务器

为了让服务器正常工作,我需要获取字符串的SHA1哈希值。

我必须做的是在文档的第5.2.2页中解释。

注意:作为示例,如果"Sec-WebSocket-Key" 客户端握手中的标头值是"dGhlIHNhbXBsZSBub25jZQ==",则服务器将追加字符串"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"以形成字符串"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"。然后服务器将采用此字符串的SHA-1散列,给出值0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea。这个值然后是base64编码的,以给出值"s3pPLMBiTxaQ9kYGzzhZRbK+xOo=",这将在"Sec-WebSocket-Accept"头中返回。

提问于
用户回答回答于

请参阅crypto.createHash()功能和相关的hash.update()hash.digest()功能:

var crypto = require('crypto')
  , shasum = crypto.createHash('sha1');
shasum.update("foo");
console.log(shasum.digest('hex'));
// "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
用户回答回答于

强制性:SHA1已损坏,可以与平均启动加速器队列的AWS信用相冲突,但要回答你的问题:

var getSHA1ofJSON = function(input){
    return crypto.createHash('sha1').update(JSON.stringify(input)).digest('hex')
}

然后:

getSHA1ofJSON('whatever')

或者

getSHA1ofJSON(['whatever'])

或者

getSHA1ofJSON({'this':'too'})

扫码关注云+社区

领取腾讯云代金券