2011-12-28 12 views
5

Pracuję nad skryptem i muszę zapisać hasła. Dla celów programistycznych korzystam z funkcji crypt(), ponieważ jest ona łatwa i dostępna. Teraz, kiedy w zasadzie już jestem gotowy, chcę go zastąpić czymś lepszym i bardziej spójnym.Alternatywa dla krypty()

Niektóre obawy mam to:

  • nie wszystkie algorytmy są obsługiwane w każdym systemie
  • czasami sól jest wstępnie zawieszone do wyniku (wydaje się, że problem bezpieczeństwa)

Chcę czegoś, co działa z PHP 4.3+.

Czy jest coś dostępnego, czy powinienem trzymać się z crypt()? Myślałem o użyciu md5(md5($password).$salt). Dzięki za wgląd.

+5

Chcesz czegoś "lepszego niż' crypt() '" i proponujesz podwójne md5? – ceejayoz

+0

Pracowałem nad projektami, w których używano md5 i sha1 (nie razem). Więcej informacji na temat sha1: http://us.php.net/sha1 –

+0

Twoje mylące szyfrowanie (2-drożne) z hashowaniem (1-szy sposób) –

Odpowiedz

6

Nie ma nic złego w crypt

Jeśli serwer nie obsługuje go użyć innego serwera.

Należy NIGDY użycie MD5 do mieszania hasła (lub nawet SHA1 dla tej sprawy)

użyć jednej bcrypt (The Blowfish metoda crypt) lub PBKDF2

Jest to implementacja PBKDF2 tutaj: Encrypting Passwords with PHP for Storage Using the RSA PBKDF2 Standard

Więcej informacji o tym, dlaczego i jak tutaj:

+0

Problem polega na tym, że próbuję to zrobić dla innych użytkowników, w których nie mam kontroli nad ich systemami, a nie wszystkie metody kryptograficzne są dostępne, w rzeczywistości blowfish nie jest w moim, chociaż ma sha512, podczas gdy inny serwer gram na jest dokładnie odwrotnie. – steveo225

+0

@ steveo225 cóż, jeśli chcesz poświęcić bezpieczeństwo na przenośność, przykro mi z powodu twoich klientów. – Petah

+0

Co jest nie tak z md5? Widziałem wiele innych znanych systemów skryptów, takich jak vBulletin? – steveo225

4

Przede wszystkim: Poprzedzenie sól nie jest to problem bezpieczeństwa. Posiadanie soli za hasło jest wielkim dobrodziejstwem i całkiem dobrze jest przechowywać ją razem z pw.

Teraz: dopóki nie przenosisz haseł haseł z jednego systemu do drugiego, a drugi nie obsługuje domyślnego algorytmu pierwszego, nic złego nie stanie się z definicji. Od PHP 5.3 są wbudowane algorytmy w PHP, takie jak Blowfish, które są gwarantowane.