8

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

fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR

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

干杯

4

5 回答 5

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

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

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

jimport('joomla.user.helper');

于 2010-04-28T06:04:56.713 回答
12

从 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
于 2011-04-26T10:51:12.783 回答
2

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

为了防止预计算攻击,您应该使用随机盐。另外,使用更强的散列算法(例如我认为 PHP 支持的 SHA-256)可能是个好主意。有关详细信息,请参阅PHP 密码的安全哈希和盐

我不知道 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";
}
?>
于 2010-04-28T05:51:39.457 回答
1

You can go to /libraries/joomla/user and see the bind() function within user.php

All the users passwords creates in registration time will be in here.

于 2011-10-21T10:44:13.100 回答
-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 次。

于 2010-04-28T05:47:30.250 回答