我有一个要哈希的字符串。在node.js中生成哈希的最简单方法是什么?
哈希用于版本控制,而非安全性。
我有一个要哈希的字符串。在node.js中生成哈希的最简单方法是什么?
哈希用于版本控制,而非安全性。
sha256("string or binary");
我遇到了其他答案的问题。我建议您将编码参数设置binary
为使用字节字符串,并防止Javascript(NodeJS)与其他语言/服务(例如Python,PHP,Github)之间的不同哈希值。
如果不使用此代码,则可以在NodeJS和Python之间获得不同的哈希值。
NodeJS正在对字符串的UTF-8表示进行哈希处理。其他语言(例如Python,PHP或PERL ...)正在对字节字符串进行哈希处理。
我们可以添加二进制参数来使用字节字符串。
代码:
const crypto = require("crypto");
function sha256(data) {
return crypto.createHash("sha256").update(data, "binary").digest("base64");
// ------ binary: hash the byte string
}
sha256("string or binary");
说明文件:
您可能会遇到以下问题:sha256(“ \ xac”),“ \ xd1”,“ \ xb9”,“ \ xe2”,“ \ xbb”,“ \ x93”等。
其他语言(例如PHP,Python,Perl ...)和我的解决方案.update(data, "binary")
:
sha1("\xac") //39527c59247a39d18ad48b9947ea738396a3bc47
默认情况下,Node.js(无二进制):
sha1("\xac") //f50eb35d94f1d75480496e54f4b4a472a9148752
在这里,您可以在您的硬件上对所有受支持的哈希进行基准测试,并由您的node.js版本支持。有些是加密的,有些仅用于校验和。它为每种算法计算“ Hello World”一百万次。每种算法可能需要1-15秒左右的时间(在带有Node.js 4.2.2的标准Google计算引擎上测试)。
结果:
DSA:1992ms
DSA-SHA:1960ms
DSA-SHA1:2062ms
DSA-SHA1-old:2124ms
RSA-MD4:1893ms
RSA-MD5:1982ms
RSA-MDC2:2797ms
RSA-RIPEMD160:2101ms
RSA-SHA:1948ms
RSA-SHA1 :1908ms
RSA-SHA1-2:2042ms
RSA-SHA224:2176ms
RSA-SHA256:2158ms
RSA-SHA384:2290ms
RSA-SHA512:2357ms
dsaEncryption:1936ms
dsaWithSHA:1910ms
dsaWithSHA1:1926ms
DSS1:1928ms
ECDSA-与-SHA1:1880ms
MD4: 1833ms
md4WithRSA 加密:1925ms
md5:1863ms md5WithRSA
加密:1923ms
mdc2:2729ms
mdc2WithRSA:2890ms
RIPEMD:2101ms
RIPEMD160:2153ms
ripemd160WithRSA:2210ms
rmd160:2146ms
SHA:1929ms
SHA1:1880ms
sha1WithRSAEncryption:1957ms
SHA224:2121ms
sha224WithRSAEncryption:2290ms
SHA256:2134ms
sha256WithRSAEncryption:2190ms
SHA384:2181ms
sha384WithRSAEncryption:2343ms
SHA512:2371ms
sha512WithRSAEncryption:2434ms
shaWithRSAEncryption:1966ms
ssl2- md5:1853ms
ssl3-md5:1868ms
ssl3-sha1:1971ms
漩涡:2578ms