Salt en pepper toevoegen aan md5

Status
Niet open voor verdere reacties.

gast0446

Gebruiker
Lid geworden
29 dec 2009
Berichten
373
Hallo allemaal,

Ik vroeg mij af hoe ik aan de md5() string salt en pepper kan toevoegen.
Stel ik heb dit, hoe voeg ik het dan toe:

PHP:
<?php
$wachtwoorddb = md5('test');
$gecodeert = $wachtwoorddb;

if (md5( $_POST['wachtwoord'] ) == $gecodeert){
  echo 'welkom!';
}
else {
  echo 'wegwezen!';
}
?>

Alvast bedankt!

gast0446
 
Binnen de md5() functie zetten, gewoon concatten.
PHP:
$wachtwoorddb = md5('test' . 'ditiseensalt' );

En dan bij de controle weer:
PHP:
md5( $_POST['wachtwoord'] . 'ditiseensalt' ) == $gecodeert

En natuurlijk niemand vertellen wat je gebruikt ;) Het is overigens gewoon een salt :P Pepper heb ik nog nooit van gehoord.
 
ten eerste: gebruik liever sha1 of sha256. md5 is gekraakt en wil je liefst niet meer gebruiken.

@frats wat jij gebruikt is een "pepper". Een salt hoort in principe uniek te zijn voor elke user en niet statisch. Je kunt ook beide technieken combineren:

Sha1('test'.'hoixtr4moe1l1jkv00rzcel+d4nn0gxtra'.md5('test'))

de md5 is uniek voor "test". Gecombineerd met je statische peper en het origineel heb je nu salt&pepper :P Overigens kun je aan je salt ook weer een pepper toevoegen
 
Laatst bewerkt:
Ik heb nu dit, is dat veilig genoeg?

PHP:
<form action="" method="post">
<input type="text" name="wachtwoord" value="" /><br />
<input name="verzenden" type="submit" value="Verzenden" />
</form><br /><br />
<?php
$salt = "#@#4535$$5445466#%#$$#5345&&%435F%%6FDg";
$wachtwoorddb = sha1('test' . $salt);
$gecodeert = $wachtwoorddb;

if (sha1( $_POST['wachtwoord'] . $salt ) == $gecodeert){
  echo 'welkom!';
}
else {
  echo 'wegwezen!';
}
?>
 
Dit is voor een normale site prima. Nadeel van alleen een pepper is, dat mocht het ooit gevonden worden, ze de rest van de wachtwoorden met een rainbowtable kunnen ontmaskeren.

Tenzij je verwacht dat iemand het echt gaat proberen is dit voor eigen gebruik al veiliger dan 80% van de websites of zo :)

*edit* rainbowtabellen wel. echter md5 is echt gekraakt. Er zijn manieren om het buiten brute-forcen (rainbow tabellen) om te kraken
 
Laatst bewerkt:
Wist niet dat salts uniek moesten zijn. Ik kende de term alleen voor een statisch iets. Weer wat geleerd :)
 
Functies zoals md* en sha* zijn meer om hashes te genereren als checksum.
Deze zijn namelijk veel te snel klaar, je hebt niet echt een rainbow table nodig omdat je het heel snel kunt bruteforcen.

Je hebt pas een goed algoritme wanneer het lang duurt om de hash te genereren.
Dit zal ervoor zorgen dat het bijvoorbeeld paar jaar duurt ipv enkele seconden (maximaal dagen met bv sha256 oid)

Gebruik om passwords te hashen eens bcrypt, hier kun je zelf het aantal rounds instellen zodat het langer duurt.
 
Het gaat bij mij wel om een site met niet echt veel gebruikers/leden.
Als het gene wat ik nu heb al behoorlijk veilig is vind ik het al goed.

Ik denk dat ik ook de salt nog uniek ga maken door de gebruikersnaam er bij te voegen + veel tekens.
Dan wordt het kraken ook weer een stukje lastiger.

Als ik dan ook nog eens de fout inlog pogingen zou bijhouden kan ik er voor zorgen dat er tijd bij komt.
Bijvoorbeeld als je 5 keer het foute wachtwoord in typt moet je 10 minuten wachter voor je kunt inloggen.
Als je daarna weer 3 keer het foute wachtwoord intyp moet je 15 minuten wachten.
En als je dan weer 3 keer het foute wachtwoord in typt word het wachtwoord gereset.
zo duurt het al 25 minuten voordat je 11 wachtwoorden kunt uit proberen.

Hoe kant iemand trouwens met behulp van brute force het wachtwoord kraken?
Als het goed is krijgt hij het gecodeerde toch nooit te zien?
Ik dacht trouwens dat brute force alleen met md5 () kon en niet met sha1(), die ik gebruikt.

gast0446
 
Bruteforce hoeft niet via de website, wordt ook heel veel gebruikt op de hash.
Door slecht programmeren staat het wachtwoord / de hash op de verkeerde plek waar een hacker zo bij kan.

De hacker zal dan op een snel systeem allerlei mogelijkheden proberen om op die hash uit te komen.
Dan maakt het uiteraard niet uit welk hashing systeem je gebruikt. Maar zoals ik zei, het is een heel verschil of een hash in minder dan een miliseconde wordt berekend of dat het bijvoorbeeld bijna een seconde duurt per hash.

En wanneer er bijvoorbeeld sql-injecties mogelijk zijn hoeft een hacker niet eens een wachtwoord in te vullen om in te loggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan