python - python 中的 sha256(new Buffer(string, 'hex' ))

标签 python node.js

目前我用nodejs编写了这段代码。

const sha256 = require('js-sha256').sha256;
var stringl = "8d12a197cb00d4747a1fe03395095ce2a5cc68198f3470a7388c05ee4e7af3d01d8c722b0ff5237400000000000000000000000000000000000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000004c4b40000000000000000000000000000000000000000000000000000000000001e240"
console.log(sha256(new Buffer(stringl, 'hex')));

返回

2c0a99a5727be633e440dd8ce2090a0ab7d5a84ccafc9385ea9812db4d715df1

我想将代码从nodejs转换为python (3.5)。

我想我可以用这段代码来做到这一点。

import hashlib
string21 = "8d12a197cb00d4747a1fe03395095ce2a5cc68198f3470a7388c05ee4e7af3d01d8c722b0ff5237400000000000000000000000000000000000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000004c4b40000000000000000000000000000000000000000000000000000000000001e240"
print(hashlib.sha256(str(int(string21,16)).encode('utf-8')).hexdigest())

但是返回

346c61765546d4ff12fdbea997f40bdb5216b8df2b5402a6b45893df723132f6

有什么想法吗?

最佳答案

Buffer 返回一个字节数组(range(0, 256) 中的整数),因此您需要在 Python 中执行相同的操作:

print(hashlib.sha256(bytearray.fromhex(string21)).hexdigest())

bytearray.fromhex 正如它所说:从十六进制表示创建一个 bytearray

编辑:这里不需要对任何内容进行编码,因为bytearray已经代表字节。

关于python - python 中的 sha256(new Buffer(string, 'hex' )),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46878547/

相关文章:

python - 具有 nan 值的同一图上的多个子图

node.js - less-middleware 不生成输出 css

python - 当文件使用 Python 具有不同的键时将 JSON 转换为 CSV?

python - 如何在 Python 中制作多键击功能

python - 读取 csv 后从单元格切片的数据帧

javascript - 我无法获得错误响应 node.js 以 Angular 返回

javascript - Angular:无法导入 Sequelize

javascript - 简单的 Nodejs Web 服务器总是发送文本/纯 css 和 js 文件

javascript - 使用 NodeJS 将网页抓取的数据写入 JSON 文件

Python 无法导入 openpyxl