Door
christof thyssen
op 26-08-2012 17:08
gewijzigd op 26-08-2012 17:09
2.507 views
hallo,
ik vraag me nu af hoe je eigenlijk een wachtwoord versleuteld naar de database stuurt en hoe je het er opnieuw uithaalt zodat je het kan vergelijken met wat de gebruiker heeft ingevuld als hij wil inloggen.
misschien even verduidelijken:
met md5 vond ik het heel eenvoudig, je kon namelijk onderstaande doen:
<?php
INSERT INTO ... VALUES md5($_POST['wachtwoord'];
?>
en je kon het er ook terug uithalen en verwerken zoals bv:
<?php
if($_POST['ingevuld-wachtwoord'] === md5($_POST['wachtwoord'])) {
echo "wachtwoord komt overeen met dat in de database";
...
}
?>
heeft iemand een voorbeeld van hoe je dit met het nieuwe "hash bcrypt class encryption" kan doen?
Erin zetten is gewoon 'bcrypt()->hash($var)' gebruiken en dan '$var' als jou variabelenaam, (ik heb het gebruikt in een functie) in een registratie formulier.
Je stukje om het uit de database te halen is niet correct. Dat moet iets zijn van
<?php
$database_wachtwoord = select wachtwoord from ...
if(MD5($_POST['ingevuld-wachtwoord']) === $database_wachtwoord)) {
echo "wachtwoord komt overeen met dat in de database";
...
}
?>
Met een ander hashing algoritme gaat het eigenlijk precies hetzelfde.
n.b. Wat mij betreft is MD5 nog steeds heel veilig, als de gekozen wachtwoorden maar lang genoeg zijn, of gesalt worden met een salt van voldoende lengte. Ik blijf bij MD5, ondanks het geroep van een heel aantal andere forumleden.
alvast bedankt, maar ik vind niet waar je het ophaalt en verder verwerkt
?
Onbekende gebruiker
26-08-2012 17:23
gewijzigd op 26-08-2012 17:25
@Christof, ik geef een voorbeeld van wat ik gebruik:
Functies, die ik later include:
<?php
//Functie voor definitie van bcrypt
function bcrypt()
{
static $bcrypt;
if (empty($bcrypt))
{
$bcrypt = new Bcrypt(15);
}
return $bcrypt;
}
//Functie om het wachtwoord te maken
function maak_wachtwoord($wachtwoord)
{
//Maken van de hash voor het wachtwoord
$hmac = hash_hmac('sha512', $wachtwoord, 'thisisaveryverysecretkeyyouknow');
$hash = bcrypt()->hash($hmac);
return $hash;
}
?>
Wachtwoord maken:
$wachtwoord = maak_wachtwoord($_POST['hash']);
Wachtwoord controleren:
<?php
//Verbinding maken met de database
$qGegeven = "SELECT naam,wachtwoord FROM login WHERE naam='".mysql_real_escape_string($_POST['gbnaam'])."' LIMIT 0,1";
$qGegevenquery = mysql_query($qGegeven);
//Controleren op fouten in de verbinding
if ($qGegevenquery === false)
{
echo $sMelding[4];
}
else
{
//Gegevens beschikbaar stellen
$gegevens = mysql_fetch_array($qGegevenquery);
//Wachtwoord verifieren
$verify = controleer_wachtwoord($_POST['hash'], $gegevens['wachtwoord']);
//Controleren of het ingevulde wachtwoord, ook het echte wachtwoord is
if ($verify == 1)
{
//Hier jou tekst bij succesvolle login
}
else
{
//Hier jou tekst bij mislukte login
}
}
?>
<?php
$database_wachtwoord = select wachtwoord from ... where user = $_POST['usernaam']
..
if(MD5($_POST['ingevuld-wachtwoord']) === $database_wachtwoord)) {
echo "wachtwoord komt overeen met dat in de database";
...
}
?>