hashen mislukt
ben ik weer
ik krijg iets vreemds. ik heb een login/registreersysteempje opgebouwd, met een wachtwoord protectie van hash, salt en pepper. maar bij het registreren krijg ik een andere hash dan bij het inloggen. na lang debuggen weet ik zeker dat het in deze regels zit:
het registreren:
$_POST['setwachtwoord'] is het gekozen wachtwoord door de gebruiker, $pepper is een statische sleutel in het script, en $salt is een dynamisch gegenereerde tekenreeks van 10 tekens.
het inloggen:
$_POST['wachtwoord'] is het door de gebruiker ingevoerde wachtwoord. $pepper is diezelfde statische sleutel, en $klanten['salt'] is de salt die uit de database komt.
na debuggen weet ik dat beide salts hetzelfde zijn, beide peppers, en beide wachtwoorden. toch krijg ik een verschillende hash! ik begrijp er niets van
Toevoeging op 09/03/2012 17:12:03:
de code van het inloggen is trouwens wel goed (online hash generator), maar die bij het registreren gaat mis
ik krijg iets vreemds. ik heb een login/registreersysteempje opgebouwd, met een wachtwoord protectie van hash, salt en pepper. maar bij het registreren krijg ik een andere hash dan bij het inloggen. na lang debuggen weet ik zeker dat het in deze regels zit:
het registreren:
$_POST['setwachtwoord'] is het gekozen wachtwoord door de gebruiker, $pepper is een statische sleutel in het script, en $salt is een dynamisch gegenereerde tekenreeks van 10 tekens.
het inloggen:
Code (php)
1
2
3
2
3
<?php
$wachtwoord = hash('sha256', $_POST['wachtwoord'] . $pepper . $klanten['salt']);
?>
$wachtwoord = hash('sha256', $_POST['wachtwoord'] . $pepper . $klanten['salt']);
?>
$_POST['wachtwoord'] is het door de gebruiker ingevoerde wachtwoord. $pepper is diezelfde statische sleutel, en $klanten['salt'] is de salt die uit de database komt.
na debuggen weet ik dat beide salts hetzelfde zijn, beide peppers, en beide wachtwoorden. toch krijg ik een verschillende hash! ik begrijp er niets van
Toevoeging op 09/03/2012 17:12:03:
de code van het inloggen is trouwens wel goed (online hash generator), maar die bij het registreren gaat mis
Niet direct een antwoord op je vraag, maar een salt die je in plain text opslaat heeft weinig zin. Je kunt beter aan de hand van registratiedatum of het email-adres een salt genereren, dat is dynamisch en zonder de broncode een stuk ingewikkelder om te ontdekken. Nu geef je al een deel van de salt weg als men bij je database kan.
ja, maar daar is dan de pepper voor. ik beschouw de salt&pepper als een drieledige opslag: 1 deel in de database, 1 deel in het script, en 1 deel weet de gebruiker als het wachtwoord dat die invoert.
maar je bedoelt dat de email van de gebruiker dan bijvoorbeeld de salt kan worden?
btw, ik heb het net opgelost. was weer even vergeten dat php 0-based is, dus ik kreeg een salt van 11 tekens. maar deze werd als 10 tekens opgeslagen in de database. dus nogal kachel dat de inloggen hash dan anders wordt. toch weer niet goed gekeken. maar hij doet t
maar je bedoelt dat de email van de gebruiker dan bijvoorbeeld de salt kan worden?
btw, ik heb het net opgelost. was weer even vergeten dat php 0-based is, dus ik kreeg een salt van 11 tekens. maar deze werd als 10 tekens opgeslagen in de database. dus nogal kachel dat de inloggen hash dan anders wordt. toch weer niet goed gekeken. maar hij doet t




