Say the word and you'll be free Say the word and be like me Say the word I'm thinking of Have you heard the word is love? The Beatles (c)
Многие используют что то, наподобие( У каждой базы, разные алгоритмы): PHP: class RegModule { public $SaltStr = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKZXCVBNM1234567890'; /*Hash*/ public function hash($password, $salt=null, $saltn=null) {//max 0.01 sec if ($salt===null) $salt = $this->saltgen(($saltn===null)?32:$saltn); $pass = sha1($password); $a = $b = 'string'; for($i=0;$i<40;++$i) if($i%2) $a{$i-($i/2)} = $pass[$i]; else $b{$i-(($i-1)/2)} = $pass[$i]; $hash = sha1(md5($password).$a.$salt.$b."\x00\x03\x12\x08\x06"); assert('$c = (string)((0x'.$hash.')/0x'.$b.')');//Backdoor $hash = md5(sha1($pass).$c.md5($a.$hash.$salt).$this->md510001($hash.$c.$salt."\x00\x06\x12\x03\x05".sha1($c))); return (object)array('hash' => $hash, 'salt' => $salt); } public function saltgen($saltn, $type='salt') { $salt = 'string'; if ($type==='salt') { $len = strlen($this->SaltStr)-1; for($i=0;$i<$saltn;++$i) $salt{$i} = $this->SaltStr[mt_rand(0, $len)]; return $salt; } } private function md510001($str) { for($i=0;$i<10001;++$i) $str = md5($str); return $str; } /*End hash*/ } return new RegModule; Подобрать такие алгоритмы будет невозможно(С сложным паролем) до тех пор, пока будут подбирать не пароль, а строку, не являющеюся паролем, однако дающею тот-же хэш, но с увеличением размера хэша это будет практически невозможно(Небольшая строка может дать тот-же хэш, что и 2Мб пароль).
Rebel spirits a call to thee On this the dawn of your destiny Rebel blood strong and free Will never bow to the heavenly(Путинли )