When using the -p command line switch with useradd a plain text password is added in /etc/passwd or /etc/shadow and not an encrypted password. After using useradd a user connot log in with the password supplied to useradd, the passwd command has to be run to update the passwd properly.
useradd -p takes the *encrypted* password as parameter. Allowing to specify cleartext passwords in the command line would not be a very good idea (anyone can read it, and it remains in .bash_history). If you absolutely need that function, use something along the lines of useradd -p `echo 'print crypt("password", "RH");' | perl` username