Avatar billede zinux Nybegynder
08. januar 2009 - 18:20 Der er 8 kommentarer

MD5 decryptering.

Er der nogen måde at decryptere MD5, når man skal trække det ud fra sin database, så den ikke bare skriver en masse underlige ting?
Avatar billede Six Nybegynder
08. januar 2009 - 18:22 #1
Nej. MD5 er en envejskryptering.
Avatar billede Six Nybegynder
08. januar 2009 - 18:25 #2
Hvis du f.eks. har gemt md5 krypterede passwords i din database og vil have sammenlignet om det en bruger indtaster som password er det samme. Så tjekker du bruger input op imod databasens password.

f.eks.
if (md5($user_input_password) == md5($user_database_password)) {
    echo "Dine passwords matcher";
} else {
    echo "Forkert password";
}

Det er selvfølgelig kun, hvis det er password håndtering der er problemet for dig :)
Avatar billede Six Nybegynder
08. januar 2009 - 18:26 #3
md5($user_database_password))

Skal være:

$user_database_password istedet, da passwordet jo allerede er md5 krypteret. Min fejl ;)
Avatar billede riversen Nybegynder
08. januar 2009 - 18:28 #4
det kaldes nu hashing og ikke kryptering. Hvis ikke det var envejs havde man jo i princippet verdens bedste komprimering.
Avatar billede Six Nybegynder
08. januar 2009 - 18:48 #5
Jeg kan se du har ret der riversen. Men hjælp mig lige.

Det er en hashing fordi en hashstreng kan bestå af flere forskellige inputs? Og det kan en kryptering ikke? Er det korrekt forstået? :)
Avatar billede superanden Nybegynder
08. januar 2009 - 18:52 #6
Du kan aldrig være 100% sikker på at dekode det rigtigt, eftersom md5 hashen har den samme længe uanset hvilket password du indtaster, derfor vil der være passwords som giver den samme md5 hash.

Derfor går dekryptering af md5 ud på at skabe kollisioner til det indtastede password, disse passwords som giver kollisioner vil så kunne bruges alle steder som bruger md5 kryptering men ikke steder som f.eks. bruger en anden kryptering. Med mindre man har været heldig at ramme det rigtige password.

Mest anvendelige metode er at finde en kollision ved at benytte en dictionary eller bruteforce fremgangsmåde, som f.eks. gennem programmet John The Ripper (Linux)

Der er forskere som har lige har fremvist en algoritme som kan skabe disse kollisioner uden at prøve sig frem, hvilket er væsentlig hurtigere, algoritmen blev vist til at skabe md5 kollisioner på filer. Men så vidt jeg ved er algoritmen ikke frigivet eller lækket.

Man kan jo lave sit eget program som jeg har leget lidt med. Prøve alle tastekombinationer med f.eks. små og store bogstaver samt tal. Hvis du gør det for password på 5 karakterer, og kun små bogstaver for 6 karakterer og koder den korrekt mht ram og cache optimering så tager det ca. 3 dage og fylder ca. 150gb.

Hvis du ønsker at lave kombinationer med små/store bogstaver og tal på op til 8 karakterer så fylder det 4500 GB. Så det kræver en god investering, jeg har algoritmerne til at lave det men ingen harddiske som er store nok.

Ps. ved en korrekt opdeling tager det omkring et halvt sekund at slå en md5 kollision op i en tabel på 150gb (fordelt over flere filer)
Avatar billede jensgram Nybegynder
08. januar 2009 - 22:15 #7
Man behøver imidlertid ikke altid selv lave disse rainbow tables: http://md5.rednoize.com/

Salt, for satan :) -- http://en.wikipedia.org/wiki/Salt_%28cryptography%29
Avatar billede olebole Juniormester
09. januar 2009 - 11:37 #8
<ole>

Kør sleep i et sekund ved hver login. Det er voldsomt demotiverende i forbindelse med brute-force forsøg  ;o)

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester