Coderen van wachtwoord?
help me pls :)
Strikt genomen is het niet coderen, want je kunt ze daarna niet decoderen.
Decoderen is (vooralsnog) niet mogelijk, je moet voor het vergelijken ook het wachtwoord sha1() of md5() coderen, en de 2 gecodeerde wachtwoorden vergelijken.
En stop je deze 'gecodeerde' wachtwoorden in een database, zorg dan dat het veld groot genoeg is. 32 bij md5() en ik dacht 40 bij sha1()
$password = sha1 ($_POST['password']);
@ SanThe: 40 is correct.
http://be.php.net/manual/en/function.sha1.php
en ff om zelf te zien:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Paswoord in Sha1 testen</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="pass.php">
<p>Je gewenste paswoord:</p>
<p>
<label>
<input type="password" name="pass" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Submit" />
</label>
</p>
</form>
</body>
</html>
Het is niet handig om op die manier te testen. isset geeft namelijk true of false terug.
false of true komen dan tog overéén met 0 of 1...
(of legt die van to dat verkeerd uit :p )
if(isset($_POST['Submit'])){
Vraagje: Wat gebeurt er als er op submit is geklikt en er niets in het form is ingevuld?
Code (php)
Gewijzigd op 22/01/2006 23:53:00 door Robert Deiman
if ($_SERVER['REQUEST_METHOD']) == 'POST') {
// versleutelde password echoën
}
else {
// formulier laten zien.
}
en dat pas NA de <body> tag zetten.
Gewijzigd op 22/01/2006 23:53:00 door Jan Koehoorn
Jan:
en dat pas NA de <body> tag zetten.
Dat heb je weer scherp opgemerkt!
Als je het écht goed wil doen, dan kun je het best een indexbestand maken van bijvoorbeeld 40 gigabytes groot met hierin volledig randomized passwords. Deze hebben allemaal een unieke id waar je de pointer direct op kan zetten. Zo kun je wachtwoorden in je database opslaan van bijvoorbeeld 4 of 5 integers. Voordeel? Integers zijn factoriaal sneller dan varchars, INT(5) is sowieso veel kleiner dan VARCHAR(40), en je codering is vele malen veiliger omdat er geen systematiek in zit.
md5 raad ik af, is al 2 keer gehackt. Eerste keer in 1996.
Maar dit is uiteraard vanuit een behoorlijk wanhopig en wantrouwend oogpunt. Wel een oogpunt waar je rekening mee moet houden bij grote systemen. Ben nu bezig met een systeem voor ongeveer 300 miljoen mensen waar ik niet eens mag denken aan md5 ;)
Gewijzigd op 23/01/2006 00:13:00 door Jan Koehoorn
Haha, daar ben ik het volledig mee eens. Maar het is eens een andere manier van denken voor sommige mensen die hier wel bezig zijn met grote sites. Toevoegingen kunnen hopelijk nooit kwaad.
Dat hacken van md5 is al een aantal keer een onderwerp geweest. Over "hacken" van sha1 heb ik ook al gelezen. Voor de gemiddelde hobby-site kun je volstaan met een minimale password-lengte van 8 karakters en een sleep(5) op een mislukte inlogpoging.
Ik heb, als ik de schijven van al mijn servers bij elkaar optel, nog lang geen 40 Gig.
PHPerik:
md5 maakt een hash van data, maar 2 verschillende 'dingen' kunnen dezelfde hash opleveren... m.a.w md5 is niet te decoderen, alleen te brute-forcen (zo lang mogelijk proberen, totdat er een keer het goede antwoord uit rolt).md5 raad ik af, is al 2 keer gehackt. Eerste keer in 1996.
Gehackt is imho een verkeerde term, alles kan gebrute-forced worden.
Neen, md5 is twee keer algoritmisch gehackt. Het is waarschijnlijk al een paar miljard keer brute-force gekraakt. Maar het algoritme (dus het priemgetal voor en na de modulo) is 2 keer gehackt.
En 2 keer in 10 jaar is niet echt veel.....