我有一个想要哈希的字符串。在node.js中生成哈希最简单的方法是什么?
散列用于版本控制,而不是安全性。
我有一个想要哈希的字符串。在node.js中生成哈希最简单的方法是什么?
散列用于版本控制,而不是安全性。
当前回答
节点的加密模块API仍然不稳定。
从4.0.0版本开始,本地Crypto模块不再不稳定。来自官方文件:
加密 稳定性:2 -稳定 该API已被证明令人满意。与npm生态系统的兼容性 是高优先级的,除非绝对必要,否则不会被破坏。
因此,应该认为使用本机实现是安全的,没有外部依赖。
作为参考,下面提到的模块是在Crypto模块仍然不稳定时作为替代解决方案提出的。
您还可以使用sha1或md5模块中的一个,它们都可以完成这项工作。
$ npm install sha1
然后
var sha1 = require('sha1');
var hash = sha1("my message");
console.log(hash); // 104ab42f1193c336aa2cf08a2c946d5c6fd0fcdb
or
$ npm install md5
然后
var md5 = require('md5');
var hash = md5("my message");
console.log(hash); // 8ba6c19dc1def5702ff5acbf2aeea5aa
(MD5是不安全的,但经常被Gravatar等服务使用。)
这些模块的API不会改变!
其他回答
看看crypto。createhash (algorithm)
var filename = process.argv[2];
var crypto = require('crypto');
var fs = require('fs');
var md5sum = crypto.createHash('md5');
var s = fs.ReadStream(filename);
s.on('data', function(d) {
md5sum.update(d);
});
s.on('end', function() {
var d = md5sum.digest('hex');
console.log(d + ' ' + filename);
});
crypto模块使这非常容易。
设置:
// import crypto from 'crypto';
const crypto = require('crypto');
const sha256 = x => crypto.createHash('sha256').update(x, 'utf8').digest('hex');
用法:
sha256('Hello, world. ');
即使哈希不是为了安全性,您也可以使用sha而不是md5。在我看来,人们现在应该忘记md5,它是过去的事了!
不建议使用普通的nodejs sha256。所以,现在你有两个选择:
var shajs = require('sha.js') - https://www.npmjs.com/package/sha.js (used by Browserify)
var hash = require('hash.js') - https://github.com/indutny/hash.js
我更喜欢使用shajs而不是哈希,因为我认为sha是目前最好的哈希函数,你现在不需要一个不同的哈希函数。所以要在十六进制中获得一些哈希,你应该像下面这样做:
sha256.update('hello').digest('hex')
如果你只是想md5哈希一个简单的字符串,我发现这对我有用。
var crypto = require('crypto');
var name = 'braitsch';
var hash = crypto.createHash('md5').update(name).digest('hex');
console.log(hash); // 9b74c9897bac770ffc029102a200c5de
我使用的是blueimp-md5,它“兼容服务器端环境,如Node.js,模块加载器,如RequireJS, Browserify或webpack和所有网络浏览器。”
像这样使用它:
var md5 = require("blueimp-md5");
var myHashedString = createHash('GreensterRox');
createHash(myString){
return md5(myString);
}
如果在公开场合传递散列值,对它们加盐总是一个好主意,这样人们就更难重新创建它们:
createHash(myString){
var salt = 'HnasBzbxH9';
return md5(myString+salt);
}