2013-10-07 11 views
22

Obecnie uczę się o szyfrowaniu i bezpieczeństwie haseł w NodeJS. Pracuję z bieżącym przykładem, który obecnie używa PBKDF2, chciałbym zamiast tego zmienić to na SHA256. Czy to jest możliwe i/lub ma sens? Jak mógłbym to załatwić?NodeJS - SHA256 Szyfrowanie hasła

var crypto = require('crypto'); 

var len = 128; 

var iterations = 13000; 

module.exports = function (pwd, salt, fn) { 
    if (3 == arguments.length) { 
    crypto.pbkdf2(pwd, salt, iterations, len, fn); 
    } else { 
    fn = salt; 
    crypto.randomBytes(len, function(err, salt){ 
     if (err) return fn(err); 
     salt = salt.toString('base64'); 
     crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){ 
     if (err) return fn(err); 
     fn(null, salt, hash); 
     }); 
    }); 
    } 
}; 
+1

To może pomóc http://stackoverflow.com/questions/13714103/hashing-a-password-using-sha256-and-net -node-js –

+1

To jest dość dobre podsumowanie hasła hashing: https://crackstation.net/hashing-security.htm – ntoskrnl

+0

https://www.npmjs.com/package/sha256 Sprawdź ten moduł – James111

Odpowiedz

45

Jeśli chciał generować sha256 skrótów, wówczas trzeba by upuścić iteracji i mienia długości jak te są specyficzne dla pbkdf2. Będziesz wtedy używał crypto.createHash(), który używa OpenSSL do generowania skrótów. W związku z tym typy skrótów, które można wygenerować, zależą od zainstalowanej wersji OpenSSL.

var crypto = require('crypto'); 
var hash = crypto.createHash('sha256').update(pwd).digest('base64'); 

Twój specyficzny realizacja może wyglądać następująco:

var crypto = require('crypto'); 
module.exports = function(pwd, fn) { 
    var hash = crypto.createHash('sha256').update(pwd).digest('base64'); 
    fn(null, hash); 
}; 
+6

Właściwie, aby wygenerować pa HUSH hash w sha256, musisz użyć skrótu "hex": var hash = crypto.createHash ('sha256'). update (pwd) .digest ('hex'); – Vadorequest

+6

Mieszanie jest nadal "sha256", ma tylko inne kodowanie. Osoba, która zadała pytanie, użyła również "base64" jako swojego kodowania, dlatego odpowiedziałem tak. – hexacyanide

+5

Po prostu myślę, że niektórzy ludzie nie zarządzają kodowaniem i chcą uzyskać wynik w podstawowym SHA256 (takim jak ja), wykorzystałem trochę czasu, aby to zrozumieć, więc chciałem tylko pomóc następcom: p – Vadorequest