md5(rand()) например или что нить подобное, а из возващенной стороки можешь использовать кусок нужной тебе длины.
PHP: <?php $length = 12; $lowers = 'abcdefghijklmnopqrstuvwxyz'; $uppers = strtoupper($lowers); $digits = '1234567890'; $chars = $lowers . $digits . $uppers; for ($i=0, $size=strlen($chars), $password=''; $i<$length; $i++) $password .= $chars{mt_rand(0, $size-1)}; print $password; ?> я обычно так делаю.
PHP: <? $len=10; //Длина пароля $str=''; for($i=0;$i<$len;$i++){ switch(rand(0,2)){ case 0:$str.=chr(rand(65,90));break; //Большие буквы case 1:$str.=chr(rand(97,122));break;//Маленькие буквы case 2:$str.=rand(0,9);break;//Цифры } } ?>