Šifruojam slaptažodžius

Beveik kiekviename projekte prireikia saugoti „jautrius“ duomenis duomenų bazėje. Slaptažodžių šifravimui gali būti naudojama daug metodų: pradedant standartiniu md5() , baigiant „savadarbėmis“ funkcijomis.

Pažiūrėkime, kaip atrodo md5()  funkcija užhešuotas tekstas:

<?php
echo md5( 'FooBar' ) ;
?>

f32a26e2a3a8aa338cd77b6e1263c535

sha1() :

<?php
echo sha1( 'FooBar' ) ;
?>

eb8fc41f9d9ae5855c4d801355075e4ccfb22808

Dabar pažiūrėkime, kaip hešuoja PHP funkcija crypt() :

<?php
$t = 'FooBar' ;
echo crypt( $t ).'<br>' ;
echo crypt( $t ).'<br>' ;
echo crypt( $t ).'<br>' ;
?>

$6$lMf9ZPUl$QLFkxS6wJDwH1CJrU/v8qdikoYFaIo.HiML3hPmmSBMaISCoGD/Qx3a/XmgixLYC7HznkmFE3wa9ctWNxOPuT1
$6$3j619K0V$2mq1JKQToeXqVDQRKWVeEbC7OvwycdKViuHHhskVFWCmv4KKhTQzMMMJPGy6gDpPoSABT6.kfQSzMhVkgyMbM/
$6$l8wbdjK2$udg6oz.GHcQnRrHBjJ3GBdTkosOO1Og6MDhFl.tgJGbM8aquhfMmPgTfcrfShcxCdCisYdX87TGyXh9gijuz70

Kaip matome, funkcijos rezultatas nesikartoja (!).
Šitaip „sudarkytą“ slaptažodį ramiai saugom DB.

Patikrinimas? Prašom:

<?php

$user_input = 'FooBar' ;

$hash = '$6$lMf9ZPUl$QLFkxS6wJDwH1CJrU/v8qdikoYFaIo.HiML3hPmmSBMaISCoGD/Qx3a/XmgixLYC7HznkmFE3wa9ctWNxOPuT1' ;
var_dump( $hash === crypt( $user_input, $hash ) ) ;

$hash = '$6$3j619K0V$2mq1JKQToeXqVDQRKWVeEbC7OvwycdKViuHHhskVFWCmv4KKhTQzMMMJPGy6gDpPoSABT6.kfQSzMhVkgyMbM/' ;
var_dump( $hash === crypt( $user_input, $hash ) ) ;

$hash = '$6$l8wbdjK2$udg6oz.GHcQnRrHBjJ3GBdTkosOO1Og6MDhFl.tgJGbM8aquhfMmPgTfcrfShcxCdCisYdX87TGyXh9gijuz70' ;
var_dump( $hash === crypt( $user_input, $hash ) ) ;

?>

boolean true
boolean true
boolean true

 Поплавский, надеюсь, уже все понятно?

Plačiau apie crypt().

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.