Encryptie functie niet functionerend...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Afra ca

Afra ca

20/04/2009 11:01:00
Quote Anchor link
Gegroet zijt u allen,

Was even beetje aan het rondlezen over md5, salt en sha1, en kwam in een ander topic tegen dat md5 op zichzelf best prima is, maar dat als je de hash gewoon even googeld/googled je soms al het wachtwoord vind (even getest, en is bij simpele wachtwoorden heel makkelijk inderdaad.... :O ). Nu had ik ergens deze code gevonden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
     $password
= "banana"
    $salt = sha1(md5($password));
    $password = md5($password.$salt);
?>


Vond ik er best leuk uitzien, en wilde even een poging doen dat toe te passen in mijn eigen scripts. Dus ik maakte de function encrypt aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
//encryption functie
function encrypt($pass) {
$pass1 = trim($pass);
$pass2 = escape($pass1);
$password = $pass2;
$salt = sha1(md5($password));
$password = md5($password.$salt);
}

?>


De function "escape" is een eerder aangemaakte functie van 3 regels om gewoon niet altijd hele mysql_real_escape_string te hoeven uitschrijven, en die functie werkt gewoon prima. Trim spreekt voor zichzelf, een bestaande functie in php.

Als ik nu met een query ga INSERT-en, op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$cQuery
=    "
INSERT INTO
gebruikers
(Gebruikersnaam,Wachtwoord,IP,Type    )
VALUES(
'"
.escape($_POST['Gebruikersnaam'])."',
'"
.encrypt($_POST['Wachtwoord1'])."',                                                        
'"
.escape($realip)."',
'"
.escape('user')."'
)"
;
?>


Probleem nu is dat als ik in de database kijk, in de kolom wachtwoord leeg is..... als ik de query echo, blijkt hij inderaad daar gewoon niks te inserten.....
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
 
PHP hulp

PHP hulp

26/04/2024 04:39:40
 
TJVB tvb

TJVB tvb

20/04/2009 11:05:00
Quote Anchor link
En wat gaat er nu fout?
 
Jelmer -

Jelmer -

20/04/2009 11:07:00
Quote Anchor link
Je vergeet 'return $password;' in je functie :)
 
Afra ca

Afra ca

20/04/2009 11:11:00
Quote Anchor link
haha, briljante opmerking Jelmer ;) Dank is groot.
 
Mark PHP

Mark PHP

20/04/2009 13:14:00
Quote Anchor link
Je hebt nog aardig wat te leren over encryptie. Dit is mijn insziens absoluut niet logisch (lees: veilig).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$salt
= sha1(md5($password));
$password = md5($password.$salt);
?>
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Han eev

Han eev

20/04/2009 13:23:00
Quote Anchor link
Het veilig genoeg, het is alleen niet altijd handig om zichzelf als salt te gebruiken. Opzich is sha1(password) al genoeg. Doe je nog sha1(salt . password . salt) dan zit je helemaal veilig.
 
Mark PHP

Mark PHP

20/04/2009 13:41:00
Quote Anchor link
Het is inderdaad niet handig om je password ook als salt te gebruiken. Dan verdwijnt het nut van je salt.

Maar waar ik meer op doelde is dat de salt nu tweemaal geëncrypt wordt en vervolgens nogmaals samen met het password. Eénmaal in totaal is voldoende.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Afra ca

Afra ca

21/04/2009 16:40:00
Quote Anchor link
Was gewoon maar een voorbeeld dat mijn aandacht trok. Ben uitermate onbedreven in php (al leer ik steeds meer), en wilde gewoon even kijken hoe en wat dit binnen mijn systeem zou doen. Begrijp dat het niet helemaal ideaal is toegepast.

Wat betreft de $salt, hebben jullie suggestie voor een leuke salt? Vind het ook zo flauw en simpel staan als ik $salt = 854930 gebruik o.id.
 
- Ariën  -
Beheerder

- Ariën -

21/04/2009 17:01:00
Quote Anchor link
Sije Harkema schreef op 21.04.2009 16:40:
Was gewoon maar een voorbeeld dat mijn aandacht trok. Ben uitermate onbedreven in php (al leer ik steeds meer), en wilde gewoon even kijken hoe en wat dit binnen mijn systeem zou doen. Begrijp dat het niet helemaal ideaal is toegepast.

Wat betreft de $salt, hebben jullie suggestie voor een leuke salt? Vind het ook zo flauw en simpel staan als ik $salt = 854930 gebruik o.id.

Verzin zelf eens een saltstring..
Inspiratie voldoende... :P
 
Afra ca

Afra ca

21/04/2009 17:35:00
Quote Anchor link
Leek me leuk om m'n salt string niet 1 expressie te maken, wilde dus, wat ze volgens mij noemen, een dynamic salt. Leek mij echter een probleem als ik een dynamic salt zou hebben (zal m'n post wel editen als ik de term fout heb) ik wel mooi de het ge-encrypte wachtwoord kon inserten in de database (ok, md5 is niet echt encryptie), maar er bij de controle er een andere salt werd gebruikt en dus geen "match" zou zijn.

Las net iets over user id gebruiken als salt, maar dat lijkt me ook niet helemaal een leuke optie, aangezien je dan met inserten een heel gedoe krijgt......... en later met opvragen ook.......
 
The Force

The Force

21/04/2009 18:09:00
Quote Anchor link
Het is geen encryptie maar hashing. Salt zou je afhankelijk kunnen maken van de waarden van meerdere velden en een zelf verzonnen string.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$salt
= sha1("f&#Kl'2 $_POST[gebruikersnaam] |-_-| $pass");
$pass = sha1(".> $pass ,W{7 $salt");
?>


Lijkt mij dynamisch genoeg. Door hetzelfde geintje uit te halen bij het inloggen kan je ook gewoon controleren of het wachtwoord correct is.
 
GaMer B

GaMer B

21/04/2009 18:13:00
Quote Anchor link
Als je het dynamisch wilt maken , kun je met salt & pepper gaan werken. Daarbij kun je de salt statisch in een configuratiebestand zetten en de pepper in de database opslaan in een eigen kolom. De pepper genereer je dynamisch per gebruiker bij het registreren.

Je krijgt dan zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

$hash
= sha1($config['salt'] . $row['password'] . $row['pepper']);
[
/code]
 
Mark PHP

Mark PHP

21/04/2009 18:23:00
Quote Anchor link
Theforce117 schreef op 21.04.2009 18:09:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$salt
= sha1("f&#Kl'2 $_POST[gebruikersnaam] |-_-| $pass");
$pass = sha1(".> $pass ,W{7 $salt");
?>
Nogmaals, dit is NIET veiliger dan slechts eenmaal sha1 toepassen. Beginnersfout.

@GaMer13: de terminologie is officieel precies andersom, een salt komt uit de database, terwijl de pepper in een bestand staat.

Leesvoer.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 



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.