【问题标题】:using php to create a joomla user password?使用 php 创建 joomla 用户密码?
【发布时间】:2011-02-13 04:45:27
【问题描述】:

我正在尝试为 Joomla 创建一个自定义注册组件,我想知道是否有人知道如何为 joomla 创建正确的密码加密? Joomla 密码如下所示:

fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR

我认为哪个是 md5(或其他东西)和单向加密?我只是在寻找某种 php 代码来创建相同的加密。

干杯

【问题讨论】:

标签: php joomla passwords md5 password-hash


【解决方案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 次。

【讨论】:

  • 不要这样做!这在任何意义上都不是“加密”,这是一种简单的混淆,即使是最基本的攻击者也无法击败。
【解决方案2】:

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

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

我不了解 PHP,但大多数语言都有一个支持 md5 和(和其他散列算法)的库,PHP 似乎也支持。我发现了这个:

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

使用 » RSA Data Security, Inc. MD5 Message-Digest Algorithm 计算 str 的 MD5 哈希,并返回该哈希。

这是一个例子:

<?php
$password = 'apple';

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

【讨论】:

  • md5() 不再被视为良好做法。现在有更好的方法。
【解决方案3】:
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword("yourpassword", $salt);
$password = $crypt.':'.$salt;

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

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

jimport('joomla.user.helper');

【讨论】:

    【解决方案4】:

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

    1. 生成密码
    2. 生成 32 个随机字符
    3. 连接 1 和 2
    4. md5(3)
    5. 存储 4:2

    例子:

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

    【讨论】:

      【解决方案5】:

      你可以去/libraries/joomla/user看看user.php里面的bind()函数

      在注册时创建的所有用户密码都会在这里。

      【讨论】:

        猜你喜欢
        • 2014-11-18
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 2011-07-17
        • 2016-09-26
        相关资源
        最近更新 更多