Yo uso esté método .. se basa en expresiones regulares .. MD5() (encriptación en un solo sentido) y time() (fecha actual en segundos).. combinado todo en la cocktelera puedes obtener passwords hasta 13 caracteres alfanumericos (incluidos si lo deseas otros caracteres tan solo con añadirlos a la expresion regular q se usan ..Si no necesitas tantos caracteres para el password .. tan solo cambia el "13" q aparece al final por el q desees.
Código PHP:
$password = substr(eregi_replace("[^A-Z0-9]", "", md5(time())) .
eregi_replace("[^A-Z0-9]", "", md5(time())) .
eregi_replace("[^A-Z0-9]", "", md5(time())),
0, 13);
Un saludo,