Gå til innhold

Gode måter å salte et passord på


Anbefalte innlegg

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 :p )

Lenke til kommentar
Videoannonse
Annonse

<?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 av hotstian
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...