From command line (using php-cli): $ php genWikihash.php [] // Tomas V.V.Cox function msg($str) { die($str); } /** * Encrypts a password using the given method and salt * * If the selected method needs a salt and none was given, a random one * is chosen. * * The following methods are understood: * * smd5 - Salted MD5 hashing * md5 - Simple MD5 hashing * sha1 - SHA1 hashing * ssha - Salted SHA1 hashing * crypt - Unix crypt * mysql - MySQL password (old method) * my411 - MySQL 4.1.1 password * * @author Andreas Gohr * @return string The crypted password */ function auth_cryptPassword($clear,$method='',$salt=''){ global $conf; if(empty($method)) $method = $conf['passcrypt']; //prepare a salt if(empty($salt)) $salt = md5(uniqid(rand(), true)); switch(strtolower($method)){ case 'smd5': return crypt($clear,'$1$'.substr($salt,0,8).'$'); case 'md5': return md5($clear); case 'sha1': return sha1($clear); case 'ssha': $salt=substr($salt,0,4); return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt); case 'crypt': return crypt($clear,substr($salt,0,2)); case 'mysql': //from http://www.php.net/mysql comment by $nr=0x50305735; $nr2=0x12345671; $add=7; $charArr = preg_split("//", $clear); foreach ($charArr as $char) { if (($char == '') || ($char == ' ') || ($char == '\t')) continue; $charVal = ord($char); $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8); $nr2 += ($nr2 << 8) ^ $nr; $add += $charVal; } return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff)); case 'my411': return '*'.sha1(pack("H*", sha1($clear))); default: msg("Unsupported crypt method $method",-1); } } if (empty($_SERVER['argv'][1])) { die("Usage: php " . $_SERVER['argv'][0] . " \n"); } $method = !empty($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : 'smd5'; echo auth_cryptPassword($_SERVER['argv'][1], $method) . "\n"; ?> == Comments == Roland Eckert wrote 2006-Aug-06 16:41:16 CET: I also had luck generating a valid hash using the command line php -r 'echo md5("mypassword")."\n";'