首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在node.js中获取字符串的sha1散列?

如何在node.js中获取字符串的sha1散列?
EN

Stack Overflow用户
提问于 2011-08-08 23:02:52
回答 6查看 131.6K关注 0票数 127

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

要让服务器正常工作,我需要获取字符串的SHA1散列。

我要做的事情在Section 5.2.2 page 35 of the docs中有解释。

注意:例如,如果客户端握手中的"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"标头中返回。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-08 23:10:21

请参阅crypto.createHash() function以及相关的hash.update()hash.digest()函数:

代码语言:javascript
复制
var crypto = require('crypto')
var shasum = crypto.createHash('sha1')
shasum.update('foo')
shasum.digest('hex') // => "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
票数 297
EN

Stack Overflow用户

发布于 2015-03-18 05:14:37

必修课: SHA1 is ,you can compute SHA1 collisions for 45,000 USD。您应该使用sha256

代码语言:javascript
复制
var getSHA256ofJSON = function(input){
    return crypto.createHash('sha256').update(JSON.stringify(input)).digest('hex')
}

要回答您的问题并生成SHA1散列:

代码语言:javascript
复制
const INSECURE_ALGORITHM = 'sha1'
var getInsecureSHA1ofJSON = function(input){
    return crypto.createHash(INSECURE_ALGORITHM).update(JSON.stringify(input)).digest('hex')
}

然后:

代码语言:javascript
复制
getSHA256ofJSON('whatever')

代码语言:javascript
复制
getSHA256ofJSON(['whatever'])

代码语言:javascript
复制
getSHA256ofJSON({'this':'too'})

Official node docs on crypto.createHash()

票数 45
EN

Stack Overflow用户

发布于 2018-06-12 04:50:10

预防问题的提示(错误的哈希):

我曾体验过NodeJS对字符串的

-8表示进行哈希处理。其他语言(如Python、PHP或PERL...)正在对字节串进行哈希处理。

我们可以添加二进制参数来使用字节字符串。

代码语言:javascript
复制
const crypto = require("crypto");

function sha1(data) {
    return crypto.createHash("sha1").update(data, "binary").digest("hex");
}

sha1("Your text ;)");

您可以尝试:"\xac","\xd1","\xb9","\xe2","\xbb","\x93“等...

其他语言(Python、PHP等):

代码语言:javascript
复制
sha1("\xac") //39527c59247a39d18ad48b9947ea738396a3bc47

Nodejs:

代码语言:javascript
复制
sha1 = crypto.createHash("sha1").update("\xac", "binary").digest("hex") //39527c59247a39d18ad48b9947ea738396a3bc47
//without:
sha1 = crypto.createHash("sha1").update("\xac").digest("hex") //f50eb35d94f1d75480496e54f4b4a472a9148752
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6984139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档