用php创建一个joomla用户密码?

时间:2010-04-28 05:32:50

标签: php joomla passwords md5 password-hash

我正在尝试为Joomla创建自定义注册组件,我想知道是否有人知道如何为joomla创建正确的密码加密? Joomla密码看起来像这样:

fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR

我相信md5(或其他)和单向加密?我只是在寻找各种PHP代码来创建相同的加密。

干杯

5 个答案:

答案 0 :(得分:12)

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

经过一番搜索,我找到了答案,谢谢你的帮助:)

编辑:我忘了提到你需要在调用JUserHelper之前包含这一行:

jimport( 'joomla.user.helper');

答案 1 :(得分:12)

来自joomla论坛,这就是背后发生的事情:

  1. 生成密码
  2. 生成32个随机字符
  3. 连接1和2
  4. MD5(3)
  5. 商店4:2
  6. 示例:

    1. 生成密码 - 我们将使用'密码'
    2. 生成32个随机字符 - 我们将使用'WnvTroeiBmd5bjGmmsVUnNjppadH7giK'
    3. 连接1和2 - passwordWnvTroeiBmd5bjGmmsVUnNjppadH7giK
    4. md5(3) - 3c57ebfec712312f30c3fd1981979f58
    5. 商店4:2 - 3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK

答案 2 :(得分:2)

+1用于存储密码的哈希值,而不是存储密码本身。

为防止precomputation攻击,您应该使用随机盐。另外,使用更强大的散列算法(如SHA-256)可能是一个好主意,我认为它支持PHP。有关详细信息,请参阅Secure hash and salt for PHP passwords

我不懂PHP,但是大多数语言都有一个支持md5的库和(以及其他哈希算法),PHP似乎也是如此。我发现了这个:

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

使用»RSA Data Security,Inc。MD5消息摘要算法计算str的MD5哈希值,并返回该哈希值。

以下是一个例子:

<?php
$password = 'apple';

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

答案 3 :(得分:1)

您可以转到/libraries/joomla/user并查看bind()

中的user.php功能

注册时创建的所有用户密码都在此处。

答案 4 :(得分:-1)

  //function to encrypt the string
    function encode5t($str)
    {
      for($i=0; $i<5;$i++)
      {
        $str=strrev(base64_encode($str)); //apply base64 first and then reverse the string
      }
      return $str;
    }

    //function to decrypt the string
    function decode5t($str)
    {
      for($i=0; $i<5;$i++)
      {
        $str=base64_decode(strrev($str)); //apply base64 first and then reverse the string}
      }
      return $str;
    }

在这个函数中,我用base64_encode对字符串进行了5次加密,并用strrev()反转字符串,然后通过反转字符串然后应用base64_decode()来解密5次。