Ich benutze pbkdf2 in node.js für Hash-Passwörter.crypto.pbkdf2 ist asynchron, wie behandle ich es als synchron?
Mein Problem ist, dass ich auf eine Anfrage nach Authentifizierung reagiere und ich bin in der Mitte der Authentifizierung, wenn die übergebenen Anmeldeinformationen korrekt sind. Ich nehme an, dass pbkdf2 asynchron ist, da es möglicherweise viel Zeit in Anspruch nehmen kann (abhängig von der Größe der Iterationen). Das Verschieben der verbleibenden Authentifizierungslogik in eine separate Methode zur Verwendung des Rückrufs scheint jedoch etwas hässlich zu sein.
Gibt es einen besseren Ansatz als entweder einen Timer zu verwenden oder die gesamte Authentifizierungslogik in eine separate Funktion zu werfen? Ich weiß, die meisten werden sagen, dass ich den Rückruf verwenden sollte, aber in meinem Anwendungsfall macht das einfach keinen Sinn. Ich kann die Authentifizierung nicht fortsetzen, bis ich pbkdf2 auf das übergebene Passwort angewendet habe.
Bin ich richtig in der Annahme, dass der bcrypt auf Blowfish basiert (wie auf dem Wikipedia-Link aus dem Projekt node.bcrypt.js)? Ich benutzte pbkdf2 mit einem Salz, das größer als 128 Bits und mit 10000 Iterationen war, was eine NIST-Zulassung ist, während der Blowfish bcrypt nicht ist (siehe Wikipedia artical). Ich bin nur neugierig auf Ihren Kommentar, dass bcrypt sicherer ist. Für meine Zwecke ist es am wahrscheinlichsten. nicht so kritisch, aber ich würde gerne den sichersten Ansatz verwenden. – Metalskin
@Metalskin, erforschte ich ein bisschen mehr. 'BCrypt' ist bei kürzeren Pfadphrasen stärker, bei Pfadinfra- sen, die länger als 55 Zeichen sind, beginnt es, auf' pbkdf2' zu verlieren. Aber beide sind sicher genug, also gibt es keinen wirklichen Unterschied. Siehe [diese Antwort] (http://stackoverflow.com/questions/4433216/password-encryption-pbkdf2-using-sha512-x-1000-vs-bcrypt) für weitere Informationen. –
Danke, dass der Link wirklich hilfreich war, ich denke nicht, dass ich über 55 Zeichen gehen werde, also sollte es in Ordnung sein, bcrypt zu verwenden. Sieht so aus, als wäre Scrypt besser, aber ich konnte keine aktiven Projekte für node.js finden. – Metalskin