Tło
Nigdy ... naprawdę ... nie musisz znać hasła użytkownika. Chcesz tylko zweryfikować, że przychodzący użytkownik zna hasło do konta.
Hash It:
Przechowuj hash użytkowników (szyfrowanie jednokierunkowe) za pomocą silnej funkcji skrótu. Wyszukiwanie hasła „c # encrypt passwords” daje mnóstwo przykładów.
Zobacz online twórcę skrótów SHA1, aby dowiedzieć się, co wytwarza funkcja skrótu (ale nie używaj SHA1 jako funkcji skrótu, użyj czegoś silniejszego, takiego jak SHA256).
Teraz hashowane hasła oznaczają, że ty (i złodzieje baz danych) nie powinieneś być w stanie przywrócić tego hasha z powrotem do oryginalnego hasła.
Jak z tego korzystać:
Ale, jak mówisz, jak korzystać z tego zmasowanego hasła przechowywanego w bazie danych?
Gdy użytkownik się zaloguje, poda Ci nazwę użytkownika i hasło (w oryginalnym tekście). Wystarczy użyć tego samego kodu skrótu, aby zakodować to wpisane hasło, aby uzyskać zapisaną wersję.
Porównaj więc dwa hashowane hasła (hash bazy danych dla nazwy użytkownika oraz wpisanego i hashowanego hasła). Możesz sprawdzić, czy „to, co wpisali”, „pasuje” do tego, co wprowadził pierwotny użytkownik dla swojego hasła ”, porównując ich skróty.
Dodatkowy kredyt:
Pytanie: Gdybym miał twoją bazę danych, czy nie mógłbym po prostu wziąć crackera takiego jak John the Ripper i zacząć tworzyć skróty, dopóki nie znajdę pasujących do zapisanych, zakodowanych haseł? (ponieważ użytkownicy wybierają krótkie, słownikowe słowa i tak ... powinno być łatwo)
Odpowiedź: Tak ... tak, mogą.
Powinieneś więc „zasolić” swoje hasła. Zobacz artykuł Wikipedii na temat soli
Zobacz przykład „Jak mieszać dane za pomocą soli” w C #