使用PHP创建Joomla用户密码?

8
我正在尝试为Joomla创建自定义注册组件,想知道如何为Joomla创建正确的密码加密方式?Joomla密码看起来像这样:
fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR
我相信这是md5(或类似的)单向加密?我只是在寻找一种PHP代码,以创建相同的加密方式。
谢谢。

请查看此链接 -> http://stackoverflow.com/questions/35333417/joomla-3-4-password-generation-method/35337002#35337002 - Joomler
5个回答

13
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword("yourpassword", $salt);
$password = $crypt.':'.$salt;
在进一步搜索后,我找到了答案,谢谢大家的帮助 :)
编辑:我忘记提到在调用JUserHelper之前需要包含这行代码:
jimport('joomla.user.helper');

12

从joomla论坛看,这是后台发生的情况:

  1. 生成密码
  2. 生成32个随机字符
  3. 连接1和2
  4. 对3进行md5加密
  5. 存储4:2

示例:

  1. 生成密码 - 我们将使用“password”
  2. 生成32个随机字符 - 我们将使用“WnvTroeiBmd5bjGmmsVUnNjppadH7giK”
  3. 连接1和2 - passwordWnvTroeiBmd5bjGmmsVUnNjppadH7giK
  4. 对3进行md5加密 - 3c57ebfec712312f30c3fd1981979f58
  5. 存储4:2 - 3c57ebfec712312f30c3fd1981979f58:WnvTroeiBmd5bjGmmsVUnNjppadH7giK

2
“+1”表示赞同存储密码的哈希值而非明文密码本身。为了防止预计算攻击,应该使用随机盐值。此外,最好使用更强的哈希算法,例如SHA-256,我认为PHP支持该算法。有关更多信息,请参见PHP密码的安全哈希和盐。我不了解PHP,但大多数编程语言都有支持md5(和其他哈希算法)的库,PHP似乎也有。我找到了这个:
string md5 ( string $str [, bool $raw_output = false ] )

计算使用RSA数据安全公司的MD5消息摘要算法对str进行哈希处理,并返回该哈希值。
以下是一个例子:
<?php
$password = 'apple';

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

md5()不再被认为是良好的实践。现在有更好的方法。 - mickmackusa

1
你可以前往 /libraries/joomla/user 目录下查看 user.php 文件中的 bind() 函数。
所有用户在注册时创建的密码都会存储在这里。

-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次解密。

3
不要这样做!从任何意义上讲,这都不是“加密”,这只是简单的混淆,甚至无法抵御最基本的攻击者。 - Adam Rosenfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接