(有相当多的相当相似的帖子——我读过它们,解决方案主要是关于 Python 字符串编码,我认为我已经控制了但显然仍然没有)
我正在尝试将 NPM 包移植到 Python,但我无法从每个脚本中获得相同的结果。我已将其简化为:
import sys
import hashlib
from binascii import hexlify
print("Python", sys.version)
test1 = "abcdefg".encode("utf-8")
print(hexlify(test1), hashlib.sha256(test1).hexdigest())
test2 = "abcdefg".encode("latin1")
print(hexlify(test2), hashlib.sha256(test2).hexdigest())
test3 = "abcdefg".encode("ascii")
print(hexlify(test3), hashlib.sha256(test3).hexdigest())
test4 = b"abcdefg"
print(hexlify(test4), hashlib.sha256(test4).hexdigest())
test5 = bytes([0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67])
print(hexlify(test5), hashlib.sha256(test5).hexdigest())
var js_sha3 = require('js-sha3')
var crypto = require('crypto');
var buffer = require('buffer');
console.log("Javascript:", process.version)
function toHex(str) {
return new Buffer.from(str).toString('hex')
}
var test1 = "abcdefg"
console.log(toHex(test1).toString('hex'), js_sha3.sha3_256(test1))
var test2 = Buffer.from("abcdefg")
console.log(toHex(test2), js_sha3.sha3_256(test2))
var test3 = "abcdefg"
console.log(toHex(test3), crypto.createHash('sha3-256').update(test3).digest("hex"))
var test4 = Buffer.from("abcdefg")
console.log(toHex(test4), crypto.createHash('sha3-256').update(test4).digest("hex"))
var test5 = buffer.Buffer.from("abcdefg", 'hex')
console.log(toHex(test5), js_sha3.sha3_256(test5))
但是,进入abcdefghttps://emn178.github.io/online-tools/sha256.html *(由 支持js-sha3)返回7d1a54....
所以,我的问题是——我在 Javascript 和 Python 中对 SHA-256 的使用有何不同?我错过了什么?(我不会试图声称其中一个实现被破坏了!)
holdtom
牛魔王的故事
相关分类