werken met "hash bcrypt class encryption"

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Christof thyssen

christof thyssen

26/08/2012 17:08:42
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
INSERT INTO ... VALUES md5($_POST['wachtwoord'];
?>


en je kon het er ook terug uithalen en verwerken zoals bv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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?

alvast bedankt
Gewijzigd op 26/08/2012 17:09:30 door Christof thyssen
 
PHP hulp

PHP hulp

24/11/2024 19:33:42
 

26/08/2012 17:17:06
Quote Anchor link
Bij: http://www.phphulp.nl/php/script/beveiliging/login-systeem/1958/
Heb ik gebruik gemaakt van het hash bcrypt, daar kun je zien hoe je het wachtwoord kunt ophalen en controleren.

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.
 
John Berg

John Berg

26/08/2012 17:19:18
Quote Anchor link
Je stukje om het uit de database te halen is niet correct. Dat moet iets zijn van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?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.
Gewijzigd op 26/08/2012 17:20:00 door John Berg
 
Christof thyssen

christof thyssen

26/08/2012 17:21:24
Quote Anchor link
alvast bedankt, maar ik vind niet waar je het ophaalt en verder verwerkt
 

26/08/2012 17:23:43
Quote Anchor link
@Christof, ik geef een voorbeeld van wat ik gebruik:

Functies, die ik later include:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$wachtwoord = maak_wachtwoord($_POST['hash']);


Wachtwoord controleren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?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
}
}

?>
Gewijzigd op 26/08/2012 17:25:23 door
 
John Berg

John Berg

26/08/2012 17:24:35
Quote Anchor link
Om bij je eigen voorbeeld te blijven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?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";
...
}

?>
 
Christof thyssen

christof thyssen

26/08/2012 17:25:27
Quote Anchor link
ok,nu is het al wat duidelijker.
Allebei bedankt voor de reacties ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.