Joomla 3.4密码生成方法

时间:2016-02-11 07:41:51

标签: encryption joomla passwords

我无法了解Joomla如何加密密码。我的问题是,我想在一个带有表单的简单php页面中使用Jommla所做的精确方法,而不需要任何OOP方法。

所以这是我输入的密码: 测试

这是我在Joomla数据库中作为加密密码的输出: $ 2Y $ 10 $ XXrVok3 / 3Otqg6FmqFzUmObA.rLpLt.BswwSJ7d.iCPoGSJtcqSvm

我发现它可能与BLOWFISH加密有关,但它需要其他东西(例如:生成的盐或数据库中的令牌,我找不到)

3 个答案:

答案 0 :(得分:3)

的Joomla!使用PhPass

root/libraries/phpass/PasswordHash.php

看看这里。你会在这里看到密码是如何生成的。

$2ybcrypt hashes上的默认(和首选)前缀。至于代码,你需要查看JUserHelper's hashPasswordverifyPassword方法,看看Joomla现在如何处理这些事情。

一些参考 -

https://github.com/joomla/joomla-cms/blob/3.4.1/libraries/joomla/user/helper.php#L296-L387

https://docs.joomla.org/API15:JUserHelper/getCryptedPassword

https://docs.joomla.org/API15:JUserHelper/getSalt

检查链接,希望你能帮到你;)

答案 1 :(得分:1)

加密是由名为'PasswordHash.php'的类加密的,joomla位于libraries / phpass下。

如果你想在joomla框架中使用php脚本,你只能导入这个类。 这是一个例子:

<?php
require 'PasswordHash.php';
header('Content-type: text/plain');
$t_hasher = new PasswordHash(10, TRUE);
$correct = 'test';
$hash = $t_hasher->HashPassword($correct);
print 'Hash: ' . $hash . "\n";
//Get password to check from get variable
$p=$_GET['p'];
//check if is correct
$check = $t_hasher->CheckPassword($p, $hash);
if ($check){
    print 'CORRECT PASSWORD';
    }
else {
    print 'WRONG PASSWORD';
    }
?>

然后用yourcriptname.php调用这个脚本?p = PASSWORDTOCHECK。

您可以在此处找到课程http://www.openwall.com/phpass/

的文档

答案 2 :(得分:0)

谢谢你的回复

我在页面中使用你的代码表单,但输出($ hash)与我想要的不一样

    <?php
    require 'PasswordHash.php';
    if(isset($_POST['send'])) {
    $t_hasher = new PasswordHash(10, TRUE);

    $correct = $_POST['pass'];

    $hash = $t_hasher->HashPassword($correct);

    print 'Hash: ' . $hash . "\n";
    }
?>

<form action="" method="post">

    <input type="text" name="pass">

    <input type="submit" name="send" value="send">

</form>

这是我的代码,类在根目录中,所以它工作正常。 所以输出总是不同的,这个哈希可能存储在代码或数据库中的某个位置以生成这个($ 2y $ 10 $ XXrVok3 / 3Otqg6FmqFzUmObA.rLpLt.BswwSJ7d.iCPoGSJtcqSvm)密码