Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Szyfrowanie MD5
Forum PHP.pl > Forum > Przedszkole
kamil1114
Co mi daje szyfrowanie MD5 ? Jest jakaś funkcja do zaszyfrowania jakiegoś napisu ?
flashdev
Po pierwsze MD5 nie jest algorytmem szyfrującym, tylko mieszajacym.
Co do drugiego pytania zobacz -> base64
zulus
To nie jest szyfrowanie, tylko hashowanie (md5 często używane jest jako suma kontrolna pliku). Funkcja to md5(), a co daje? Hmmm często używa się aby zapisać w bazie danych wersje md5 hasła (zapewnia bezpieczeństwo haseł w razie przechwycenia bazy).
WebKing
Funkcja md5" title="Zobacz w manualu PHP" target="_manual daje możliwość zabezpieczenia hasła np. w bazie danych, jeżeli chcesz zakodować tekst to masz skrypt:
  1. <?php
  2. $tekst = "Twój tekst";
  3. echo md5($tekst);
  4. ?>
kamil1114
Ok , dziękuje za odpowiedzi. Wszyscy dostali Pomógł. Czemu jak ten tekst zahashuje to takie coś mi się wyświetla: 090cf7206d54d8d9381124a362ef57b7 ?

A jest jakaś funkcja która rozkodowuje zahashowany tekst ?
WebKing
md5 nie ale base64 tak funkcja base64_decode" title="Zobacz w manualu PHP" target="_manual
phpion
Cytat(kamil1114 @ 8.01.2009, 19:28:01 ) *
A jest jakaś funkcja która rozkodowuje zahashowany tekst ?

Nie ma. Możesz jedynie zastosować metodę brute force czyli generować kolejne ciągi (np. a, b..., aa, ab...) i porównywać ich md5 z tym, który już masz. Nie uzyskasz jednak w ten sposób ciągu pierwotnego (chyba, że będziesz miał szczęście tongue.gif) a jedynie inny ciąg posiadający taki sam hash md5.
kamil1114
Czemu jak ten tekst zahashuje to takie coś mi się wyświetla: 090cf7206d54d8d9381124a362ef57b7 ? To mi coś daje ?
WebKing
Kodowanie md5 jest nieodwracalne przy pomocy tej funkcji możesz porównać dane wysłane ($_POST) z md5($haslo)
sowiq
Cytat(kamil1114 @ 8.01.2009, 17:37:33 ) *
Czemu jak ten tekst zahashuje to takie coś mi się wyświetla: 090cf7206d54d8d9381124a362ef57b7 ? To mi coś daje ?
Nie, nie daje Ci niczego, poza tym, że nie możesz tego odwrócić. Tzn. nie otrzymasz dzięki znajomości wyniku - ciągu wejściowego.

Dzięki temu możesz zapisywać hasła w bazie danych 'zakodowane' funkcją md5. Jeśli ktoś przechwyci Twoją bazę to nie odczyta haseł, bo będzie znał jedynie hash'e. Tobie (np. podczas logowania) będzie potrzebna tylko informacja, czy md5($wpisane_haslo) = $md5_zapisane_w_bazie.

Jeśli masz jeszcze jakieś pytania, to poczytaj w necie. Pełno jest artykułów na ten temat. Poczytaj też o kolizjach i sposobach 'łamania' md5.
kamil1114
Ok , dziękuje. A w takim przypadku jest sens wykorzystywać md5:
Kod
<html>
<head>
</head>
<body>

<form method="POST">
Podaj login: </br>
<input type="text" name="login"></br>
Podaj haslo: </br>
<input type="password" name="haslo"></br>
<input type="submit" name="wyslane" value="Wyslij"></br>
<input type="reset" value="Wyczysc">
</form>
<?php

$wyslane=$_POST['wyslane'];
if(isset($wyslane)){
$login=$_POST['login'];
$haslo=$_POST['haslo'];

$id=md5("login");
$hash=md5("haslo");

if($login===$id && $haslo===$hash){

echo "zalogowane";

}
else echo "Złe dane";

}
else echo "Wypełnij pola";

?>
</body>
</html>


czy tylko przy bazach ? To mi nie działa.
flashdev
Jeżeli zakładasz możliwość przechwycenia danych w drodze do serwera, to takie rozwiązanie może zabezpieczyć dane (login i hasło) przed ich uzyskaniem. Przy czym nie zabezpieczy, Cie przed zalogowaniem osoby, która je przechwyciła.
Ja nie widze większego sensu stosowania takiego rozwiazania.
kamil1114
Ok , dziękuje wszystkim za pomoc
Rafal Filipek
w twoim skrypcie musisz jeszcze zamienic
Kod
$login=$_POST['login'];
$haslo=$_POST['haslo'];

na

$login=md5($_POST['login']);
$haslo=md5($_POST['haslo']);
kamil4u
Ja jeszcze dodam: md5 jest niczym, gdy hasło jest po prostu słabe. Jak określa się siłę hasła? ilość znaków, stosowanie dużych i małych liter, stosowanie cyfr, nie używanie wyrazów słownikowych i inne mniej ważne - są bazy danych, w których zapisane są wyrazy słownikowe w md5 smile.gif

Pozdrawiam
sowiq
Cytat(kamil4u @ 8.01.2009, 20:38:34 ) *
Ja jeszcze dodam: md5 jest niczym, gdy hasło jest po prostu słabe.
Oczywiście wiesz, że nawet jak Twoje hasło ma 100 znaków, to jest spore prawdopodobieństwo kolizji krótszego hasła. Tzn. hasło 4-znakowe może mieć taki sam hash jak Twoje 100-znakowe i nijak tego nie sprawdzisz, bo porównujesz tylko wyniki działania funkcji md5().

A więc Twoje rozumowanie nie do końca jest słuszne. Chociaż oczywiście nie polecam nikomu ustawiania 4-znakowych haseł smile.gif
flashdev
Cytat(sowiq @ 8.01.2009, 23:09:45 ) *
Oczywiście wiesz, że nawet jak Twoje hasło ma 100 znaków, to jest spore prawdopodobieństwo kolizji krótszego hasła. Tzn. hasło 4-znakowe może mieć taki sam hash jak Twoje 100-znakowe i nijak tego nie sprawdzisz, bo porównujesz tylko wyniki działania funkcji md5().


36^32 = 63340286662973277706162286946811886609896461828096

Bądźmy realistami, prawdopodobieństwo, że ktoś przypadkowo trafi na to hasło jest mniejsze niz wygranie w totolotka kilka razy pod rząd.
Nawet jeśli masz superkomputer i bruteforcem przeliczysz choćby nawet 10^20 (w co wątpię) kombinacji to i tak pozostaje kosmiczna ilość.
Pewnie to się zmieni, kiedy powstaną komputery kwantowe, ale to juz inna bajka smile.gif
sowiq
Cytat(flashdev @ 9.01.2009, 00:03:30 ) *
36^32 = 63340286662973277706162286946811886609896461828096
Pudło smile.gif Skrót składa się z wartości hexadecymalnych, więc nie 32^32, a 16^32. To daje różnicę 29 rzędów wartości smile.gif

Ale co do prawdopodobieństwa to oczywiście masz rację. Jednak wykluczyć się tego nie da, dlatego bezpieczniej stosować sha1() smile.gif
erix
Jedno i drugie można złamać. Serwisów do odwracania haseł jest mnóstwo, poza tym - ophcrack (na tęczowych tablicach) i jeśli nie wprowadzi limitu błędnych logowań, to prędzej czy później ktoś się wbije na konto.
sowiq
Cytat(erix @ 9.01.2009, 21:12:55 ) *
Serwisów do odwracania haseł jest mnóstwo
Chyba raczej do szukania ciągu wejściowego/kolizji. md5/sha1 nie da się odwrócić.
erix
Ok, łamania - i tak wiemy, o co chodzi. winksmiley.jpg
sowiq
Cytat(erix @ 10.01.2009, 00:37:39 ) *
Ok, łamania - i tak wiemy, o co chodzi. winksmiley.jpg
My tak, ale już nie raz spotkałem się z opiniami, że md5 da się odwrócić (odczytać ciąg wejściowy znając tylko hash), co jest kompletną bzdurą smile.gif
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.