function sha512(s){
var sha = crypto.createHash('sha512');
sha.update(s);
return sha.digest('hex');
};
exports.sha512 = sha512;
我现在正在使用这个,但我想切换到 scrypt。 我该怎么做?
function sha512(s){
var sha = crypto.createHash('sha512');
sha.update(s);
return sha.digest('hex');
};
exports.sha512 = sha512;
我现在正在使用这个,但我想切换到 scrypt。 我该怎么做?
您应该使用node-scrypt。
它有清晰的 API 和良好的文档。
var scrypt = require("scrypt");
var scryptParameters = scrypt.params(0.1);
var key = new Buffer("this is a key"); //key defaults to buffer in config, so input must be a buffer
//Synchronous example that will output in hexidecimal encoding
scrypt.hash.config.outputEncoding = "hex";
var hash = scrypt.hash(key, scryptParameters); //should be wrapped in try catch, but leaving it out for brevity
console.log("Synchronous result: "+hash);
//Asynchronous example that expects key to be ascii encoded
scrypt.hash.config.keyEncoding = "ascii";
scrypt.hash("ascii encoded key", {N: 1, r:1, p:1}, function(err, result){
//result will be hex encoded
//Note how scrypt parameters was passed as a JSON object
console.log("Asynchronous result: "+result);
});
scrypt
不支持node
版本0.11或新发布的版本0.12。 - trysisvar scrypt = require('scryptsy') //npm install --save scryptsy
var key = "pleaseletmein" //can be of type 'Buffer'
var salt = "SodiumChloride" //can be of type 'Buffer'
var data = scrypt(key, salt, 16384, 8, 1, 64)
console.log(data.toString('hex'))
// => 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887
这是一个简化的barrysteyn/node-scrypt同步示例,包含(反)序列化:
let scrypt = require('scrypt')
let scryptParameters = scrypt.paramsSync(0.1)
function encode(s) {
return scrypt.kdfSync(s, scryptParameters).toString('Base64')
}
function verify(encoded, s) {
return scrypt.verifyKdfSync(new Buffer(encoded, 'Base64'), s)
}
// Example:
let s = encode('my password') // c2NyeXB0AAwAAAAI....
verify(s, 'my password') //true
verify(s, 'my pa$$word') //false
在Node 7.0.0和scrypt 6.0.3上进行测试。
new Buffer(string[, encoding])
已被弃用,应改用 Buffer.from(string[, encoding])
。来源 无论如何都很有帮助;文档对于应该放入 verifykdf 函数的类型非常不清楚。 - MagicLegend
kdf()
和verify()
函数。 - ChrisV