md5 functie, nog beter
Er als al een artikel over de md5 functie, nu heeft een andere auteur een artikel over md5 functie geschreven. Dit artikel is ietsjes uitgebreider kwa beveiliging.
Gesponsorde koppelingen
Inhoudsopgave
60 reacties op 'md5 functie, nog beter'
Gesponsorde koppelingen
Zelfs 1 x md5() is voldoende voor de overheid instatie waarom:
md5() genereerd een string dat altijd 32 tekens heeft. Maar de string die je in geeft heeft er minimaal 0 en maximaal oneindig
Dus je raad al voor meerdere md5 hashes heb je de zelfde antwoord.
Je kunt dus alleen maar je wachtwoord achterhalen op brute force. (Alle wachtwoorden af gaan) en dan is het simpel bij hoeveel tekens is het veilig.
Meerdere keren md5() voegt nog maar weinig veiligheid toe :)
md5() genereerd een string dat altijd 32 tekens heeft. Maar de string die je in geeft heeft er minimaal 0 en maximaal oneindig
Dus je raad al voor meerdere md5 hashes heb je de zelfde antwoord.
Je kunt dus alleen maar je wachtwoord achterhalen op brute force. (Alle wachtwoorden af gaan) en dan is het simpel bij hoeveel tekens is het veilig.
Meerdere keren md5() voegt nog maar weinig veiligheid toe :)
Sorry maar deze tutorial slaat nergens op.
De taal fouten zijn echt verschrikkelijk mijn broertje van 5 kan dit nog verbeteren.
Verder heeft het geen zin om 3x een md5 te genereren aangezien indien een md5 decrypter zou bestaan het een kwestie zou zijn van het aantal maal dat md5 is gebruikt raden en je bent klaar :
$output = md5(md5(md5($test))
wordt dan simpel gevonden door
(indien md3 de decoder is van md5)
$test = md3(md3(md3($output))
De taal fouten zijn echt verschrikkelijk mijn broertje van 5 kan dit nog verbeteren.
Verder heeft het geen zin om 3x een md5 te genereren aangezien indien een md5 decrypter zou bestaan het een kwestie zou zijn van het aantal maal dat md5 is gebruikt raden en je bent klaar :
$output = md5(md5(md5($test))
wordt dan simpel gevonden door
(indien md3 de decoder is van md5)
$test = md3(md3(md3($output))
@Robby
Lezen is een kunst bewijs jij wederom : "indien md3 de decoder is van md5"
ik geef hier aan dat INDIEN er een decoder zou bestaan voor md5 in mijn geval deze md3 zou heten.
Verder vind ik het slap dat als je een artikel maakt je dit dan niet even na loopt in MS Word ivm de taalfoutjes. Het zeggen dat het 4 uur s'nachts is doet daar imo niets aan af.
Lezen is een kunst bewijs jij wederom : "indien md3 de decoder is van md5"
ik geef hier aan dat INDIEN er een decoder zou bestaan voor md5 in mijn geval deze md3 zou heten.
Verder vind ik het slap dat als je een artikel maakt je dit dan niet even na loopt in MS Word ivm de taalfoutjes. Het zeggen dat het 4 uur s'nachts is doet daar imo niets aan af.
@Mitch: Als men 3x md5 had kunnen bedenken waarom heb ik dat dan nog nooit ergens in een script gezien?
En ze vallen buiten de quutes hoor. Want het is blauw gekleurd en niet rood de variabele. Dat je het korter doet oke, maar ik ben gewend om het zo te doen want zo kan ik er handig een zin tussen typen.
En ze vallen buiten de quutes hoor. Want het is blauw gekleurd en niet rood de variabele. Dat je het korter doet oke, maar ik ben gewend om het zo te doen want zo kan ik er handig een zin tussen typen.
"Jah ik ben wel admin maar pas met de nieuwe site :(
En je hebt het stiekum verbeterd van:
naar:
Wat dus al helemaal zinloos is ...
volstaat ... "
Zelfs:
volstaat al.
Er hoeven geen accolades om echo. Enne, over dat gedoe met 3x md5... Het heeft wel degelijk nut hoor. Want als ze de eerste md5-string kunnen decoden, houden ze NOG een md5 string over... Die kunnen ze weer gaan decoden en dan houden ze er weer een over, dan zijn ze al ongeveer 2 dagen verder. En dan moeten ze er nog een paar.
Dus dat heeft denk ik wel nut.
Enne, include en echo zijn geen functie:
En je hebt het stiekum verbeterd van:
naar:
Wat dus al helemaal zinloos is ...
volstaat ... "
Zelfs:
volstaat al.
Er hoeven geen accolades om echo. Enne, over dat gedoe met 3x md5... Het heeft wel degelijk nut hoor. Want als ze de eerste md5-string kunnen decoden, houden ze NOG een md5 string over... Die kunnen ze weer gaan decoden en dan houden ze er weer een over, dan zijn ze al ongeveer 2 dagen verder. En dan moeten ze er nog een paar.
Dus dat heeft denk ik wel nut.
Enne, include en echo zijn geen functie:
Quote:
Je lult. Met brute-force kan je wel een woord in md5 achterhalen.
Je gaat gewoon alle combinaties af.
Je gaat gewoon alle combinaties af.
1 hash kan/heeft meerdere woorden dus dat lijkt me wel moeilijk dan? ...
En als je een functie md3() hebt als decoders zoals in het voorbeeld dan maakt het niet uit hoeveel hashes je hebt gebruikt want dan doen je het gewo0n opnieuw.
Zolang wachtwoorden alleen server side blijven, is ??n keer met MD5 coderen meer dan genoeg. Als je toch betere beveiliging wilt, raad ik je aan om zelf een functie te schrijven die bijvoorbeeld van alle A's negens maakt, van alle vijven T's, enz., dus gewoon alles door elkaar gooit. Daarna met MD5 eroverheen, en niemand ziet meer wat je hebt gedaan... :)
Oh ja, nog even snel over de mensen die zeggen dat MD5 niet te decoderen is: het is gewoon mogelijk om het rijtje andersom af te gaan. Als ik bijvoorbeeld weet dat Persoon A zijn MD5 gecodeerde wachtwoord op deze server als hieronder is, kan ik een wachtwoord genereren dat op elke andere site met dezelfde MD5 encryptie gewoon wordt geaccepteerd.
Voorbeeldje:
Stel dat "test" als MD5 als volgt wordt geschreven: "61ABCDEF65BD" (ja, voorbeeld, lengte klopt niet... ;)). Als je deze combinatie zeg maar achteruit terug gaat rekenen naar een wachtwoord, kan daar iets als "87Jndsfn;&)sdf" uitkomen. Op zich weet je dan nog het wachtwoord inderdaad niet, maar als ik dan dat "87Jndsfn;&)sdf" geval even ga uitproberen op een andere website waar meneer Persoon A lid is, dan zal deze gewoon geaccepteerd worden, aangezien hun MD5 functie het weer omzet in "61ABCDEF65BD"... Dus je kunt MD5 wel decoderen, en je hebt er ook wat aan, zolang de encryptie op een andere server maar hetzelfde is... ;) En daarom raad ik dan ook aan om gewoon voordat je een (publieke) MD5 hash maakt, deze eerst bijvoorbeeld nog even te veranderen met substr(), reverse(), enz.... :)
Voorbeeldje:
Stel dat "test" als MD5 als volgt wordt geschreven: "61ABCDEF65BD" (ja, voorbeeld, lengte klopt niet... ;)). Als je deze combinatie zeg maar achteruit terug gaat rekenen naar een wachtwoord, kan daar iets als "87Jndsfn;&)sdf" uitkomen. Op zich weet je dan nog het wachtwoord inderdaad niet, maar als ik dan dat "87Jndsfn;&)sdf" geval even ga uitproberen op een andere website waar meneer Persoon A lid is, dan zal deze gewoon geaccepteerd worden, aangezien hun MD5 functie het weer omzet in "61ABCDEF65BD"... Dus je kunt MD5 wel decoderen, en je hebt er ook wat aan, zolang de encryptie op een andere server maar hetzelfde is... ;) En daarom raad ik dan ook aan om gewoon voordat je een (publieke) MD5 hash maakt, deze eerst bijvoorbeeld nog even te veranderen met substr(), reverse(), enz.... :)
Inderdaad nog een goede opmerking: je kunt ook gewoon md5("wachtwoord"."secretkey"); gebruiken. Als "secretkey" moet je dan gewoon een woord opgeven dat vrij lang is en welke helemaal niets met je site te maken heeft. Op deze manier zou iemand die het wil bruteforcen, toch een vrij goede computer moeten hebben om de compleet ingevoerde string te achterhalen... ;)
---
Gepost door Robby @ 27-06-2004
Jij bent toch admin of niet Mitch?
@Justin, sta is om 9 uur in de morgen op, pak in de avond 8 flessen bier en probeer jij dan om 4 uur in de nacht een artikel te schijven dat spelfoutloos is.
Ik kan ook niet helpen dat ik er nog is dislectie bij heb.
---
(Sorry, weet niet hoe quotes hier moeten ;))
Robby, ik vraag me af wie u verteld heeft dat je 8 flessen bier moet leegdrinken, en dan nog eens om 4u 's nachts hier moet komen postten? Dat is totaal geen uitleg vind ik... Ik bedoel, niemand dwingt u dat te doen als je half (helemaal?) dronken bent?
Nuja, ik zie het nut eigenlijk ook niet in van 3x een md5 te gebruiken...
Alles is te kraken, dat is mijn mening...
Ik doe het met een enkele md5 en dat volstaat voor mijn website, op mijn website staan nu niet bepaald staatsgeheimen ofzo... :)
Grtz
Gepost door Robby @ 27-06-2004
Jij bent toch admin of niet Mitch?
@Justin, sta is om 9 uur in de morgen op, pak in de avond 8 flessen bier en probeer jij dan om 4 uur in de nacht een artikel te schijven dat spelfoutloos is.
Ik kan ook niet helpen dat ik er nog is dislectie bij heb.
---
(Sorry, weet niet hoe quotes hier moeten ;))
Robby, ik vraag me af wie u verteld heeft dat je 8 flessen bier moet leegdrinken, en dan nog eens om 4u 's nachts hier moet komen postten? Dat is totaal geen uitleg vind ik... Ik bedoel, niemand dwingt u dat te doen als je half (helemaal?) dronken bent?
Nuja, ik zie het nut eigenlijk ook niet in van 3x een md5 te gebruiken...
Alles is te kraken, dat is mijn mening...
Ik doe het met een enkele md5 en dat volstaat voor mijn website, op mijn website staan nu niet bepaald staatsgeheimen ofzo... :)
Grtz
en hoe kan iemand dat md5 gecodeerde woord nou uit jouw mysql tabel halen? dan moeten ze ook nog het wachtwoord van je tabel weten toch ?
maarja ik gebruik ook maar een enkele md5... ik heb bijna geen bezoekers en ik denk ook niet dat iemand gaat bruteforcen tegen mijn website... en als dat gebeurt... nou enn?
maarja ik gebruik ook maar een enkele md5... ik heb bijna geen bezoekers en ik denk ook niet dat iemand gaat bruteforcen tegen mijn website... en als dat gebeurt... nou enn?
Hallo, ik zag die file met md5. Maar ik snap er niets van.
Deze werkt ook niet, er staat alleen maar test en niet de gecodeerde tekst.
Vraagje: Wie heeft er voor mij een goed werkende. Graag een waar ik een naam in kan voeren en een gecodeerde terug krijg. Hieronder een stukje dat niet werkt. Deze staat op http://www.phphulp.nl/php/tutorials/10/151/268
Deze werkt ook niet, er staat alleen maar test en niet de gecodeerde tekst.
Vraagje: Wie heeft er voor mij een goed werkende. Graag een waar ik een naam in kan voeren en een gecodeerde terug krijg. Hieronder een stukje dat niet werkt. Deze staat op http://www.phphulp.nl/php/tutorials/10/151/268
Beste Co, kijk eens op: http://www.phphulp.nl/voorbeeld/md5_encryption.php :) die encode namen met md5().
Mensen kunnen overig altijd proberen een wachtwoord online te bruteforcen, aangezien ze daarvoor niet het gecodeerde wachtwoord hoeven te weten, maar gewoon alle combinatie's van A tot ZZZZZZZZZZZ ofzo afgaan. Een goede manier van beveiligen is dus bijvoorbeeld ook zorgen dat mensen hooguit 30 keer kunnen proberen in te loggen ofzo... :)
"Ik dacht als je 1x md5 kan toepassen waarom niet meerderen keren! "
Kan, maar is nutteloos. :)
Het is ook vrijwel nutteloos om de hash uit te breiden met een secret-key.
Waarom? Omdat hackers daar ook achter kunnen komen. Als ze ver genoeg in je systeem kunnen komen om de MD5 hashes te achterhalen dan kunnen ze waarschijnlijk ook bij je PHP code en gewoon zien wat jij gedaan hebt en welke secret keys jij hebt toegevoegd.
Maar bedenk ook dat een MD5 altijd 32 tekens is, terwijl de invoer veel langer kan zijn. Er zijn dus een aantal mogelijk invoeren die dezelfde MD5 hash zullen geven, de zogenaamde collisions. Het aantal MD5 hashes dat je kunt maken is dus veel kleiner dan het aantal mogeljk invoeren. Als je dan ook nog eens een hash gebruikt als invoer voor MD5 dan beperk je het aantal mogelijk invoeren voor de tweede MD5 nog verder. Wordt dus makkelijker om de tweede MD5 op te heffen. Als je een derde en vierde toevoegt dan zijn er voor de 4e hash nog maar een klein aantal mogelijk invoeren. Als een hacker weet wat je doet dan is hij daar dus snel uit.
Kan, maar is nutteloos. :)
Het is ook vrijwel nutteloos om de hash uit te breiden met een secret-key.
Waarom? Omdat hackers daar ook achter kunnen komen. Als ze ver genoeg in je systeem kunnen komen om de MD5 hashes te achterhalen dan kunnen ze waarschijnlijk ook bij je PHP code en gewoon zien wat jij gedaan hebt en welke secret keys jij hebt toegevoegd.
Maar bedenk ook dat een MD5 altijd 32 tekens is, terwijl de invoer veel langer kan zijn. Er zijn dus een aantal mogelijk invoeren die dezelfde MD5 hash zullen geven, de zogenaamde collisions. Het aantal MD5 hashes dat je kunt maken is dus veel kleiner dan het aantal mogeljk invoeren. Als je dan ook nog eens een hash gebruikt als invoer voor MD5 dan beperk je het aantal mogelijk invoeren voor de tweede MD5 nog verder. Wordt dus makkelijker om de tweede MD5 op te heffen. Als je een derde en vierde toevoegt dan zijn er voor de 4e hash nog maar een klein aantal mogelijk invoeren. Als een hacker weet wat je doet dan is hij daar dus snel uit.
even op echo en functies terug te komen:
echo() is eigenlijk geen functie (het is een language construct), dus je hoeft geen haakjes te gebruiken. Sterker nog, als je meer dan ??n parameter gebruikt mag je geen haakjes gebruiken. Het is niet mogelijk echo() te gebruiken als een variabele functie.
BRON: php.net
echo() is eigenlijk geen functie (het is een language construct), dus je hoeft geen haakjes te gebruiken. Sterker nog, als je meer dan ??n parameter gebruikt mag je geen haakjes gebruiken. Het is niet mogelijk echo() te gebruiken als een variabele functie.
BRON: php.net
Gozer.. ga je schamen!!! het voorbeeld scriptje dat er staat is dus zo brak als wat... ik zal het maar even voor je posten op een manier dat het WERKT
Ik vind ook dat je een erg simpele methode gebruikt williswaar effectief maar heel simpel om gewoon 3x md5 neer te zetten...
Je kan het ook anders doen :) maak een for loop in een functie en laat die loop 1000x die md5 string doen :) knappe hacker die dat binnen een dag hackt :) 1000 md5 strings :D
kortom.. leuk idee maar zinloos
Code (php)
Ik vind ook dat je een erg simpele methode gebruikt williswaar effectief maar heel simpel om gewoon 3x md5 neer te zetten...
Je kan het ook anders doen :) maak een for loop in een functie en laat die loop 1000x die md5 string doen :) knappe hacker die dat binnen een dag hackt :) 1000 md5 strings :D
kortom.. leuk idee maar zinloos
Dit is allemaal wel leuk en aardig maar er word iets vergeten. De tijd die het kost om iets te versleutelen. Een computer kan makkelijk een versleuteling maken die de komende tig jaar niet te kraken valt maar als het 10 min kost om in te loggen dan hou ik het voor gezien. Al is dit meer van toepassing op beveiligde verbindingen of grote websites met veel bezoekers.
Mensen die zeggen dat 3 keer versleutelen niet werk hebben niet helemaal gelijk 3DES werkt ook op een dergelijke mannier. Al weet ik niet hoe veilig die nog is.
Als je toch een betere beveiliging wil voor je wachtwoord kijk dan eens naar andere algoritme. Die een langer sleutel gebruiken. Ik weet niet hoe up-to-date hij nog is maar cast-128 (128 van de maximaal 128 bits sleutel lengte) werkt met langere sleutel. Op rijndeal zoeken is misschien ook wel leuk. Verder zijn er volgens zat andere mannieren om sites open te krijgen.
Of deze mannieren in php worden ondersteund weet ik niet maar dan schrijf je hem toch zelf ;-)
Ik gebruik in ieder geval gewoon md5 en ??n keertje. Dat is denk voor mijn online te verkrijgen teksten meer dan genoeg.
Mensen die zeggen dat 3 keer versleutelen niet werk hebben niet helemaal gelijk 3DES werkt ook op een dergelijke mannier. Al weet ik niet hoe veilig die nog is.
Als je toch een betere beveiliging wil voor je wachtwoord kijk dan eens naar andere algoritme. Die een langer sleutel gebruiken. Ik weet niet hoe up-to-date hij nog is maar cast-128 (128 van de maximaal 128 bits sleutel lengte) werkt met langere sleutel. Op rijndeal zoeken is misschien ook wel leuk. Verder zijn er volgens zat andere mannieren om sites open te krijgen.
Of deze mannieren in php worden ondersteund weet ik niet maar dan schrijf je hem toch zelf ;-)
Ik gebruik in ieder geval gewoon md5 en ??n keertje. Dat is denk voor mijn online te verkrijgen teksten meer dan genoeg.
over dat md5, het is wel degelijk veiliger om dit 2 keer te doen, want kijk: een string van 32 karakters, das toch redelijk wat langer dan de meeste wachtwoorden, als je dan die string hebt, moet je hem nog ene keer laten forcen.. (dit kost niet zo veel tijd)
daar ben ik het niet mee eens..
md5 is NU al waardeloos, een hash tot 8 karakters is in een kwestie van seconden gekraakt..
Quote:
Dit is eigenlijk de reden waarom ik dit artikel schrijf. Ik heb ooit ergens gelezen dat de md5 functie over 10 tallen jaren geen nut meer heeft. Dan kan men het uncoderen en dan zien ze het echte woord.
En dat moeten we niet hebben
En dat moeten we niet hebben
daar ben ik het niet mee eens..
md5 is NU al waardeloos, een hash tot 8 karakters is in een kwestie van seconden gekraakt..
@Huib: Waarom niet gewoon 1x met md5() en dan inclusief een salt? Dat is nog veiliger omdat je dan een grotere variatie aan tekens kunt gebruiken en maakt het brut-force-en lastiger. Daarnaast kun je, nadat jouw systeem is gekraakt, eenvoudig de salt veranderen en kan men weer opnieuw beginnen.
Persoonlijk zou ik sha1() gebruiken, die is lastiger te kraken.
Persoonlijk zou ik sha1() gebruiken, die is lastiger te kraken.
ik snap niet hoe en waar men dan een wachtwoord te zien krijgen. als dat wel zo is, dat moet dan toch al niet op een eerlijke manier gaan. want ik kijk vaak in de bron van andere site's maar krijg daarin toch echt alleen maar het resulaat van php te zien en niet het script zelf, wel html krijg je volledig te zien. en dan nog kan je er niks mee, ja je zou het kunnen kopi?eren om het zelf te gebruiken als je te lui bent om het zelf te typen, maar er veranderingen in aan brengen om het dat terug te plaatsen op de zelfde site gaat toch echt niet.
Maar als iedereen zo bang is dat het wachtwoord gekraakt wordt...
Waarom dan niet gewoon 1x encrypten met md5 of sha1
En dan een functie maken voor het aantal pogingen dat je krijgt voor het inloggen.. naa 3 pogingen wordt 30 min toegang ontzegd of account disabled?
Zo wordt het bruteforcen toch onmogelijk gemaakt ;)
Waarom dan niet gewoon 1x encrypten met md5 of sha1
En dan een functie maken voor het aantal pogingen dat je krijgt voor het inloggen.. naa 3 pogingen wordt 30 min toegang ontzegd of account disabled?
Zo wordt het bruteforcen toch onmogelijk gemaakt ;)
@niek58
Je kunt dmv SQL injection achterhalen bijvoorbeeld een code eruit ziet om dingen uit een database te halen. Of je voert alle mogelijke combinaties in het loginvak (volgens mij is dat bruteforce) om zo de code te achterhalen.
Natuurlijk doe je bruteforce niet handmatig maar met een programmatje of dergelijk.
Je kunt dmv SQL injection achterhalen bijvoorbeeld een code eruit ziet om dingen uit een database te halen. Of je voert alle mogelijke combinaties in het loginvak (volgens mij is dat bruteforce) om zo de code te achterhalen.
Natuurlijk doe je bruteforce niet handmatig maar met een programmatje of dergelijk.
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details

- 10 jaar geleden
- 1.117 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP tutorials opties
- Beveiliging
- Nieuwste PHP tutorials
- PHP tutorial toevoegen


PHP hulp
0 seconden vanaf nu