Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] szyfrowanie danych
Forum PHP.pl > Forum > PHP
szczypior
Witam

Potrzebuje zaszyfrować hasło użytkowników serwisu, jednak musi być ono zaszyfrowane tak aby maxymalnie utrudnić jego odszyfrowanie, gdyż będzie przechowywane w cookies (na potrzeby autologowania). Pojawiły się już strony na których można odszyfrować md5, więc to odpada.

Czy takie szyfrowanie jest bezpieczniejsze?
  1. <?php
  2. $td  = mcrypt_module_open('tripledes', '', 'ecb', '');
  3. $iv_size = mcrypt_enc_get_iv_size($do_szyfrowania);
  4. $iv  = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  5.  
  6. mcrypt_generic_init($do_szyfrowania, $klucz, $iv);
  7. ?>


Najlepiej jako klucz pewnie stosować długie niesłownikowe ciągi znaków, czy tak?

Może doradzicie jeszcze lepsze rozwiązanie, będę wdzięczny
Cezar708
Cytat(szczypior @ 28.08.2007, 10:28:05 ) *
Pojawiły się już strony na których można odszyfrować md5, więc to odpada.

... a to Ci... możesz podać linka? tongue.gif

Nie da rady, MD5 to nie jest sposób KODOWANIA tylko HASZOWANIA. Po prostu ciąg znaków jakie haszuje nie służy do tego aby go później rozszyfrować tylko do tego aby później porównać z kolejnym haszem.
Jeśli chcesz (w miarę) bezpieczny sposób kodowania to polecam RSA. Jest to kodowanie asynchroniczne. Koduje się za pomocą klucza publicznego (czyli "długie niesłownikowe ciągi znaków") a dekoduje za pomocą klucza prywatnego (czyli inny "długi ciąg znaków"). Klucz publiczny możesz udostępnić każdemu kto chce zaszyfrować a klucz prywatny zostawiasz sobie tylko po to aby rozszyfrować.

Linki:

http://pear.php.net/package/Crypt_RSA
http://en.wikipedia.org/wiki/RSA
szczypior
Cytat(Cezar708 @ 28.08.2007, 12:41:50 ) *
... a to Ci... możesz podać linka? tongue.gif


http://www.md5decrypter.com/

hmm spróbowałem złamać nim oraz odpowiednikiem dla sha1 hasło zahashowane w md5 i jeszcze w sha1 i się nie udało, może wystarczy zastosować te dwie metody.
Uważasz że to będzie wystarczająco bezpieczne?
nospor
Jak juz wyzej wspomniano:
md5() nie da sie odszyfrowac. Nie ma bata. Mozna znaleźć tzw: kolizje, ale to inna bajka.
Link co podales dziala na zasadzie tęczowych tabel i oni tam nic nie odszyfrowuja smile.gif

Co do bezpiecznego przechowywania hasel tu byla ciekawa dyskusja:
http://forum.php.pl/index.php?act=ST&f=1&t=44156
powinna ci pomoc.
bim2
Najlepiej dodać tzw. solę.

$haslo = md5('soal12345!@#ofsaf8fs55&'.$_POST['haselko']);

przy porownaniu znowu dodajesz swoja unikalną solę. Jeśli ktoś nie będzie znal soli nic mu nie da brute force. smile.gif
Co do cistaek zapisz do ciastka $hasełko a późnije przy logowaniu daj
  1. <?php
  2. if($haslo_z_bazy == $_COOKIE['haslo']) echo 'zalogowany';
  3. ?>
Jabol
Lol, zrób sobie logowanie za pomocą certyfikatów x509. Będziesz miał 100% (a conajmniej o 1000% większą niż z hasłami) pewność, że klient to klient. Tyle, że klienci będą musieli mieć takie certyfikaty wyrobione. I ogólnie logowanie za pomocą takich certyfikatów jest z deczka *łatwiejsze* i *prostsze* niż jakieś bajery z hasłami. Po stronie php po prostu sprawdzasz czy certyfikat to ten sam, co masz zapisany w bazie...

A tak to md5 Ci wystarczy, ew. sha1... Jak ktoś się naprawdę napali to z odrobiną (choć sporą odrobiną) szczęścia oba złamie, choć sha1 zdecydowanie trudniej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.