function account_gensalt() { function rannum() { mt_srand((double) microtime() * 1000000); $num = mt_rand(46, 122); return $num; } function genchr() { do { $num = rannum(); } while ($num > 57 && $num < 65 || $num > 90 && $num < 97); $char = chr($num); return $char; } $a = genchr(); $b = genchr(); // $salt = "$1$" . "$a$b"; $salt = "{$a}{$b}"; return $salt; }
/** * account_gensalt() - A random salt generator * * @returns The random salt string * */ function account_gensalt() { global $unix_cipher; // ncommander: modified for cipher selection // crypt() selects the cipher based on // the salt, so ... $a = genchr(); $b = genchr(); switch ($unix_cipher) { case 'DES': $salt = "{$a}{$b}"; break; default: case 'MD5': $salt = "\$1\$" . "{$a}{$b}"; break; case 'Blowfish': $i = 0; while (!($i = 16)) { $salt .= rand(64, 126); $i++; } return "\$2a\$" . $salt; break; } return $salt; }