Dichiarazione di non responsabilità: sono a conoscenza dei pericoli legati al rotolamento della propria autenticazione, questo esempio è destinato a essere utilizzato in una demo per vari metodi di hashing.
Ho scritto questa funzione Node.js per eseguire il lato server per rinforzare il motivo per cui non dovremmo eseguire il rollover ma usare una lib esistente (principalmente Bcrypt) ma potrei annullare il mio argomento in quanto non riesco a vedere come questo possa essere facilmente rotto .
L'unico modo che posso immaginare è se l'attaccante può elaborare il sale fisso (pepe), magari ottenendo un pw hash noto, estraendo il sale casuale (avrebbero bisogno di conoscere la lunghezza) e costruendo le proprie tabelle arcobaleno provare a incrinare il sale fisso (questo è molto lungo e ha un'alta entropia).
function checkPw(pw, fullhash) {
//random one time salt is first 12 chars
var salt = fullhash.substr(0,12);
//hashing the full pw, our random salt, the pw and a global fixed salt
var hashpart = crypto.createHash('sha256').update(salt + pw + process.env.SALT).digest('hex');
return (hashpart === fullhash.substr(12));
};
Le mie domande sono dov'è il difetto qui? Deve esserci qualcosa di ovvio che mi manca?