Foutje gemaakt? @ bcrypt

Gestart doorWereldhotel4 reacties84 weergaven

5 berichten · pagina 1 van 1

Wereldhotel

Lid · Topicstarter

Berichten
542
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo, sinds kort ben ik weer een beetje begonnen aan websites maken. Het is echt een ontzettend lange tijd geleden dat ik hier (bijna) dagelijks mee bezig was. Nou had ik hier nog een oude register & login script in me dropbox gevonden en zag ik dat er nog MD5 in werdt gebruikt om de wachtwoorden te beveiligen en (als ik het goed heb) is MD5 inmiddels zeer onveilig. Ik heb dus even gezocht naar een andere oplossing en toen kwam ik bij bcrypt, en heb ik geprobeerd om het in mijn login systeem in te bouwen. Wat gefaald is of omdat bcrypt niet werkt (aangezien ik de oude functie gebruik omdat hij alleen ingebouwd is in PHP 5.5 (voor zover ik had gelezen). Het probleem is dat als ik bij de login het ingevoerde wachtwoord encrypt en vergelijk met het encrypted wachtwoord in de database dat het allebij een verschillende code is maar wel allebij dezelfde tekst. Het is vast een klein foutje aan mijn kant wat ik nou over het hoofd zie, zoals gewoonlijk.

Zou iemand me hierbij willen helpen? Alvast bedankt.

Dit is de functie die ik gebruik voor bcrypt.
http://pastebin.com/eVMLUhfV

Dit is hoe ik het wachtwoord encrypt.

$bcrypt = new Bcrypt(15);
mysql_query("INSERT INTO users (username,password) VALUES (".$_POST[Name].", ".$bcrypt->hash($_POST[Password]).")") or die(mysql_error());


Dit is hoe ik de wachtwoorden vergelijk.

$bcrypt = new Bcrypt(15);
$regpass = $bcrypt->hash($_POST[Password]);
if($userreg[password] == $regpass) {
    $_SESSION[uid] = $userreg[id];
    echo <meta http-equiv="refresh" content="0;URL=index.php" />;
}
0
Berichten
528
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
gebruik $bcrypt->verify, daar is die functie voor.

toevoeging op 31 augustus 2013, 15:37:33:

$bcrypt = new Bcrypt(15);
if($bcrypt->verify($_POST[Password], $userreq[password])) {
    $_SESSION[uid] = $userreg[id];
    echo <meta http-equiv="refresh" content="0;URL=index.php" />;
}
0
Wereldhotel

Lid · Topicstarter

Berichten
542
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Haha, bedankt. Weet ik dat ook weer. Ik heb je even 0.1 punten gestuurd voor de hulp. Ik zat toch wel even vast met dat probleempje, en met MD5 kon het wel gewoon op die manier die ik deed. smile
0
Berichten
528
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
md5 is ook slecht biggrinbcrypt is beter, en het heeft zo dus zijn eigen verify functie.
Als je hem opnieuw door de hash haalt die je in het begin al doet, dan gebruikt hij een andere salt (iig hij haalt een random op uit /dev/urandom als het goed is)
Zo heeft elke gebruiker een unieke salt, die nergens opgeslagen wordt in je database o.i.d. smileVeel veiliger want je salt is niet te kraken zo.
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Rudie schreef:
md5 is ook slecht biggrinbcrypt is beter, en het heeft zo dus zijn eigen verify functie.
Als je hem opnieuw door de hash haalt die je in het begin al doet, dan gebruikt hij een andere salt (iig hij haalt een random op uit /dev/urandom als het goed is)
Zo heeft elke gebruiker een unieke salt, die nergens opgeslagen wordt in je database o.i.d. smileVeel veiliger want je salt is niet te kraken zo.
Een PC kan een salt niet uit de hogen hoed toveren, die is toch echt nodig om te controleren. De salt staat gewoon met een soort Base-64 eroverheen in de output string zelf.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren