我如何获得node.js中的string的sha1哈希值?

我试图创build一个用node.js写的websocket服务器

为了让服务器工作,我需要得到一个string的SHA1哈希值。

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

说明:例如,如果客户端握手中"Sec-WebSocket-Key"头的值为"dGhlIHNhbXBsZSBub25jZQ==" ,则服务器会附加"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"string形成string"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" 。 然后,服务器将采取此string的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'}) 

请阅读并强烈地考虑我的build议在您的文章的评论。 这就是说,如果你仍然有一个很好的理由这样做,看看这个节点crpyto模块列表 。 它有用于处理sha1和base64的模块。