Magnus Holm Skrevet 9. juni 2005 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 )
LoS Skrevet 9. juni 2005 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.
genstian Skrevet 9. juni 2005 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
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å