我正在尝试为 Joomla 创建一个自定义注册组件,我想知道是否有人知道如何为 joomla 创建正确的密码加密?Joomla 密码如下所示:
fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR
我相信哪个是 md5(或其他东西)和单向加密?我只是在寻找一种 php 代码来创建相同的加密。
干杯
我正在尝试为 Joomla 创建一个自定义注册组件,我想知道是否有人知道如何为 joomla 创建正确的密码加密?Joomla 密码如下所示:
fbae378704687625a410223a61c66eb1:VM6DwmVWHTwpquDq51ZXjWWADCIc93MR
我相信哪个是 md5(或其他东西)和单向加密?我只是在寻找一种 php 代码来创建相同的加密。
干杯
$salt = JUserHelper::genRandomPassword(32);
$crypt = JUserHelper::getCryptedPassword("yourpassword", $salt);
$password = $crypt.':'.$salt;
经过一番搜索,我找到了答案,谢谢大家的帮助:)
编辑:我忘了提到你需要在调用 JUserHelper 之前包含这一行:
jimport('joomla.user.helper');
从 joomla 论坛,这就是背后发生的事情:
例子:
+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";
}
?>
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.
//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 次。