using php to create a joomla user password?

$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword("yourpassword", $salt);
$password = $crypt.':'.$salt;

After a bit more searching i found my answer, thanks guys for your help :)

EDIT: I forgot to mention that you need to include this line before calling JUserHelper:

jimport('joomla.user.helper');


From joomla Forum, that's what happen behind:

  1. Generate a password
  2. Generate 32 random characters
  3. Concatenate 1 and 2
  4. md5(3)
  5. store 4:2

Example:

  1. Generate a password - we'll use 'password'
  2. Generate 32 random characters - we'll use 'WnvTroeiBmd5bjGmmsVUnNjppadH7giK'
  3. Concatenate 1 and 2 - passwordWnvTroeiBmd5bjGmmsVUnNjppadH7giK
  4. md5(3) - 3c57ebfec712312f30c3fd1981979f58
  5. store 4:2 - 3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK

+1 for storing the hash of the password rather than storing the password itself.

To protect against precomputation attacks you should use a random salt. Additionaly it's probably a good idea to use a stronger hashing algorithm such as SHA-256 which I think is supported on PHP. See Secure hash and salt for PHP passwords for more information.

I don't know PHP, but most languages have a library that supports md5 and (and other hashing algorithms) PHP appears to also. I found this:

string md5 ( string $str [, bool $raw_output = false ] )

Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash.

Here's an example:

<?php
$password = 'apple';

if (md5($password) === '1f3870be274f6c49b3e31a0c6728957f') {
    echo "Password correct";
}
?>