gpt4 book ai didi

javascript - Python 和 JavaScript 中的哈希 sha1

转载 作者:行者123 更新时间:2023-11-30 11:08:23 27 4
gpt4 key购买 nike

我用 Python 编写了一个脚本:

hashed_string = hashlib.sha1(str(string_to_hash).encode('utf-8')).hexdigest()

它按我想要的方式运行,但我不知道如何在 JavaScript 中执行此操作。我在 JS 中完成了这个:

const crypto = require('crypto') 
let shasum = crypto.createHash('sha1')
let hashed_string = shasum.update(JSON.stringify(string_to_hash).digest('hex'))

但是结果不一样。

最佳答案

您正在调用 hash.digest()里面hash.update() , 但 digest() 需要在 update()

之后调用

例如

const crypto = require('crypto') 
let shasum = crypto.createHash('sha1')
shasum.update(JSON.stringify(string_to_hash))
let hashed_string = shasum.digest('hex'))

const crypto = require('crypto') 
let shasum = crypto.createHash('sha1')
let hashed_string = shasum.update(JSON.stringify(string_to_hash)).digest('hex'))

const crypto = require('crypto') 
let hashed_string = crypto.createHash('sha1').update(JSON.stringify(string_to_hash)).digest('hex'))

如果您在 Python 中使用与 JSON.stringify() 方法返回的完全相同的字符串,您将获得相同的结果。任何额外的字符都会影响结果。

例如,这里是为一些类似字符串生成的 SHA1 哈希值。

#1: {a:1,b:2}          // ca681fb779d3b6f82af9b243c480ce4fb07e7af4
#2: {a:1, b:2} // 6327727c37c8d1893d9e341453dd1b8c7e72ffe8
#3: {"a":1,"b":2} // 4acc71e0547112eb432f0a36fb1924c4a738cb49
#4: {"a":1, "b":2} // 98e0e65ec27728cd01356be19e354d92fb2f4b46
#5: {"a":"1", "b":"2"} // a89dd0ae872ef448a6ddafc23b0752b799fe0de1

Javascript:

d = {a:1, b:2}  // Simple object
JSON.stringify(d) // {"a":1,"b":2} : #3 Above

python :

d = {"a":1, "b":2}
str(d)
"{'a': 1, 'b': 2}"

在 Python 中创建的字符串使用单引号并使用额外的空格字符进行格式化,因此生成的哈希值将不相同。

#6: {'a': 1, 'b': 2} // 326a92518b2b2bd864ff2d88eab7c12ca44d3fd3

关于javascript - Python 和 JavaScript 中的哈希 sha1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54761382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com