Ola peepz,

Ik vraag me ineens iets af. In hoeverre is een MD5 (of andere encryptie-methode) gecodeerd wachtwoord eigenlijk uniek?

Stel ik heb een wachtwoord van 17 tekens (lekker lang, dus extra veilig).

Het (fictieve) wachtwoord is: abc_heelveilig_!6
Het (fictieve) ge-encrypte wachtwoord is: A8BSexE90jfK_4qkjjJk40_vMFvz3iAA

Kan het nu gebeuren dat de ge-encrypte versie van mijn 17-karakters-lange wachtwoord heel toevallig hetzelfde is als een heel simpel woord, bijvoorbeeld het Engelse "tree" dat in iedere rainbow-table voorkomt? Of kan die situatie zich niet voordoen?
Een md5 hash is niet uniek.

Dat zou ook wel knap zijn, je kunt elke willekeurige teken reeks invoeren en die zou dan allemaal een unieke reeks van 32 tekens moeten krijgen.

Het is trouwens niet encrypted maar gehashd. (Is niet terug te zetten alleen nogmaals te berekenen)
Dankjewel TJVB. Het zou dus zo kunnen zijn dat mijn oh zo lastige en lange gehashte wachtwoord toevallig overeenkomt met een heel simpel woord dat voorkomt in een rainbow table? :-s Dat is eigenlijk wel heel idioot! Bizar eigenlijk...
Chris, WAT heet een hash collision? Zou je wat meer duidelijkheid kunenn geven, want ik begrijp niet wat je bedoelt.
Hash collision = Hash botsing

Kortom: Het krijgen van dezelfde hash bij 2 verschillende inputs.
Heeft iemand een voorbeeld van twee strings die dezelfde hash krijgen?
Gewoon even uit nieuwsgierigheid? Zou hier ook een vereiste voor zijn, of zouden enkele tekens van 4 karakters lang al een zelfde hash kunnen geven?
@Wouter: ah zo, thanks ;)

@Aar: ja, daar ben ik ook wel erg benieuwd naar. Toch vrij "lullig" als de gehashte versie van jouw mooie wachtwoord "@kjfdkdj_sdfzxCV#!sd9%" hetzelfde resultaat oplevert als de gehashte versie van "kat".
En dat maakt MD5-behoorlijk zwak inmiddels.
Daarom gebruik ik tegenwoordig SHA1 in projecten en kijk nu naar BCRYPT.
En bij SHA1 en BCRYPT kan dat niet gebeuren dan?
md5 is een paar jaar, ik bedoel 17 jaar, gebroken: http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities Daarom wordt md5 ook altijd afgeraden. SHA1 is tot op de dag van vandaag nog niet gebroken, maar dat gaat zeker wel gebeuren.

Semi-related: Denk ook aan "Type-coercing comparison operators will convert numeric strings to numbers". PHP zorgt ervoor dat hashes nog makkelijker kunnen botsen:
<?php
if ("61529519452809720693702583126814" == "61529519452809720000000000000000") {
// dit wordt uitgevoerd, PHP denkt dat bovenstaande hashes gelijk zijn...
}
?>

Reageren