Как создать случайный -солевой -хэш с помощью криптографии

Я хочу создать хэш соли -, используя криптографическую библиотеку node.js, без необходимости анализировать какие-либо жестко закодированные данные.

Что я имею в виду под жестко запрограммированным?

var salt, hardcodedString = "8397dhdjhjh";
crypto.createHmac('sha512', hardcodedString).update(salt).digest("base64");

Нет ли другого способа создать случайную строку без использования необработанного javascript, случайных функций или чего-то жесткого кодирования?

С уважением

ОБНОВЛЕНИЕ

var Crypto = require('crypto')
   , mongoose = require('mongoose');

module.exports = mongoose.model('User', new mongoose.Schema({
    username: {
        type: String
       , required: true
       , index: { unique: true, sparse: true }
       , set: toLower
    },
    email: {
        type: String
       , required: true
       , index: { unique: true, sparse: true }
       , set: toLower
    },
    salt: {
        type: String
       , set: generateSalt
    },
    password: {
        type: String
       , set: encodePassword
    }
}),'Users');

function toLower(string) {
    return string.toLowerCase();
}

function generateSalt() {
    //return Math.round((new Date().valueOf() * Math.random())) + '';
    Crypto.randomBytes('256', function(err, buf) {
        if (err) throw err;
        return buf;
    });
    // return Crypto.randomBytes('256'); // fails to
}

function encodePassword(password) {
    return password;
    // TODO: setter has no access to this.salt
    //return Crypto.createHmac('sha512', salt).update(password).digest("base64");
}

function authenticate(plainPassword) {
    return encodePassword(plainPassword) === this.password;
}
10
задан gevorg 27 June 2016 в 09:46
поделиться