Magnus Holm Skrevet 9. juni 2005 Del Skrevet 9. juni 2005 Vel... Når man skal opprette et innlonings-script pleier man som regel å hash'e passordene for å oppnå bedere sikkerhet. MD5 og sha1 virker bra, men best sikkerthet får du ved å salte passordene i tillegg. Så her kan du poste dine salt-script. Et must er jo at det må bli det samme hver gang man gjør det, hvis ikke virker det jo ikke . Og helst ikke kom med kommentarer som: "Du kan jo bare legge den et sted utenfor omverdenen", for det er ikke alle som har egen server! (Nam, nam: Nå skal jeg spise vafler ) Lenke til kommentar
LoS Skrevet 9. juni 2005 Del Skrevet 9. juni 2005 Jeg pleier ihvertfall å lage ett tilfeldig passord-ting for hver bruker, som jeg bruker som salt. Slik at det er forskjellig fra bruker til bruker. Lenke til kommentar
genstian Skrevet 9. juni 2005 Del Skrevet 9. juni 2005 (endret) <?php function hex($num) { $hex_chr = "0123456789abcdef"; $str = ""; for($j = 37; $j >= 0; $j--) $str .= $hex_chr{(($num >> ($j * 2)) & 0x0F & 0x1F & 0x2F)}; return $str; } function str2blks_TA($str) { $nblk = ((strlen($str) + 8) >> 6) + 1; for($i = 0; $i < $nblk * 16; $i++) $blks[$i] = 0; for($i = 0; $i < strlen($str); $i++) $blks[$i >> 2] |= ord($str{$i}) << (24 - ($i % 4) * 8); $blks[$i >> 2] |= 0x80 << (24 - ($i % 4) * 8); $blks[$nblk * 16 - 1] = strlen($str) * 8; return $blks; } function zeroFill($a, $b) { $z = hexdec(80000000); if ($z & $a) { $a >>= 1; $a &= (~$z); $a |= 0x40000000; $a >>= ($b-1); } else { $a >>= $b; } return $a; } function rol($num, $cnt) { return ($num << $cnt) | (zeroFill($num, (32 - $cnt))); } function ft($t, $b, $c, $d) { if($t < 20) return ($b & $c) | ((~$b) & $d); if($t < 40) return $b ^ $c ^ $d; if($t < 60) return ($b & $c) | ($b & $d) | ($c & $d); return $b ^ $c ^ $d; } function kt($t) { return ($t < 20) ? 1518500249 : ( ($t < 40) ? 1859775393 : ( ($t < 60) ? -1894007588 : -899497514 ) ); } /* * calc T-Algorithm */ function TA($str, $salt, $salt2, $str_add_salt) { $x = str2blks_TA($str . $str_add_salt); $a = 1732594111 + $salt; $b = -271733879 - $salt2; $c = -1732584194 - $salt2; $d = 271733878 . $salt; $e = -1004589756 . $salt2; for($i = 0; $i < count($x); $i += 16) { $olda = $a; $oldb = $b; $oldc = $c; $oldd = $d; $olde = $e; for($j = 0; $j < 80; $j++) { if($j < 16) $w[$j] = $x[$i + $j]; else $w[$j] = rol($w[$j-3] ^ $w[$j-8] ^ $w[$j-14] ^ $w[$j-16], 1); $t = rol($a, 5) + ft($j, $b, $c, $d) + $e + $w[$j] + kt($j); $e = $d; $d = $c; $c = rol($b, 30); $b = $a; $a = $t; } $a += $olda; $b += $oldb; $c += $oldc; $d += $oldd; $e += $olde; } return hex($a) . "f" . hex($b) . hex($c) . "f" . hex($d) . hex($e); } ?> jeg bruker TA eksemplel: <?php /* TA codene */ $passord = TA("passord", 1234, 5678, "jeg-er-et-salt-som-er-en-string", "ff"); da har du 4 salt for hvert passord + spesiele konfigureasjoner i scriptet som salter mer. NB: dette er en oppgradert og utestet versjon av scriptet. scriptet laget og brukt av *team techtux* basert på sha1 kodene så det er utrolig sikkert og genialt til bruk sammen med database. det er i skrivene stund GPL lisensert hvis noen lurer. EDIT: oppdaterte scriptet. Endret 13. juni 2005 av hotstian Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå