Używam pbkdf2 w node.js do mieszania haseł.crypto.pbkdf2 jest asynchroniczny, jak traktować go jako synchroniczny?
Mój problem polega na tym, że odpowiadam na żądanie uwierzytelnienia i jestem w trakcie uwierzytelniania, jeśli podane poświadczenia są poprawne. Przypuszczam, że pbkdf2 jest asynchroniczne, ponieważ może zająć dużo czasu (w zależności od rozmiaru iteracji). Jednak przeniesienie pozostałej logiki uwierzytelniania do osobnej metody w celu wykorzystania wywołania zwrotnego wydaje się trochę brzydkie.
Czy istnieje lepsze podejście niż użycie licznika czasu lub wyrzucenie wszystkich kolejnych logik uwierzytelniania do oddzielnej funkcji? Wiem, że większość powie, że powinienem użyć wywołania zwrotnego, ale w moim przypadku użycia to po prostu nie ma sensu. Nie mogę kontynuować uwierzytelniania, dopóki nie zastosuję pbkdf2 do podanego hasła.
Czy mam rację zakładając, że bcrypt oparty jest na blowfish (jak na link wikipedia z projektu node.bcrypt.js)? Używałem pbkdf2 z solą większą niż 128 bitów iz 10000 iteracjami, które afaict ma NIST zatwierdzone, podczas gdy blowing blowfish nie jest (patrz wikipedia artical). Jestem po prostu ciekawy twojego komentarza, że bcrypt jest bezpieczniejszy. Dla moich celów jest to najbardziej prawdopodobne. nie tak krytyczne, ale chciałbym użyć najbezpieczniejszego podejścia. – Metalskin
@metalskin, zbadałem trochę więcej. 'Bcrypt' jest silniejszy na krótszych ścieżkach, ale zaczyna tracić na' pbkdf2' na frazach o długości powyżej 55 znaków. Oba są jednak wystarczająco bezpieczne, więc nie ma prawdziwej różnicy. Aby uzyskać więcej informacji, zobacz [tę odpowiedź] (http://stackoverflow.com/questions/4433216/password-encryption-pbkdf2-using-sha512-x-1000-vs-bcrypt). –
Dziękuję, że ten link był naprawdę pomocny, nie sądzę, że przekroczę 55 znaków, więc powinno być w porządku korzystanie z bcrypt. Wygląda na to, że lepiej byłoby scrypt, ale nie mogłem znaleźć żadnych aktywnych projektów dla node.js. – Metalskin