du kan gøre noget i den her stil
- class password {
-
- public function generateSalt($string) {
- $len = strlen($string);
- if ($len == 0) {
- return "";
- }
- return "#mySaLT/$len%55820" . (2 * $len) . "35%45+" . $string[0] . $string[$len - 1] . "?HdT:RSg_gwlpSx";
- }
-
- public function hash($str, $salt=null) {
- if ($salt == null) {
- $salt = $this->generateSalt($str);
- }
-
- $str = $salt . $str;
- return sha1($str);
- }
-
- }
- //dynamisk salt:
- $pass = password::hash($_POST["password"]);
-
- //statisk salt:
- $pass2 = password::hash($_POST["password"], "mitSlat_ABC!123");
er ikke testet, lige hurtigt sat sammen.
Går ud fra at metoden generateSalt() generer saltet, gennem en tekst streng som er givet i parameteren. Denne metode skulle måske i virkeligheden være privat, da det er en metode der i min optik kun ser ud til at skulle bruges i sammenhæng med metoden hash($str, $salt). Metoden hash() er så den metode der generer dit hashed password med et sha1 hash, hvor ens $str er 'krydret' med noget genereret salt. Man kan sige at hele denne opsætning ligner lidt det jeg lavede, men kenneth har bare opsat det med en klasse, så man kan kalde den fra et objekt.
Der er i øvrigt en fejl, da metoden bliver kaldt som statisk metode, men den er ikke erklæret statisk. Metoden skulle enten have været erklæret statisk, ellers skulle man have oprettet et objekt af klassesn først, som nedenstående.
- //opret objekt.
- $pass_obj = new Password();
-
- //dynamisk salt:
- $pass = $pass_obj->hash($_POST["password"]);
-
- //statisk salt:
- $pass2 = $pass_obj->hash($_POST["password"], "mitSlat_ABC!123");
Indlæg senest redigeret d. 11.12.2011 22:03 af Bruger #4487