【问题标题】:Joomla 3.4 password generation methodJoomla 3.4 密码生成方法
【发布时间】:2016-05-21 21:07:15
【问题描述】:

我不知道 Joomla 是如何加密密码的。我的问题是我想在一个简单的 php 页面中使用 Jommla 所做的确切方法,该页面带有一个表单并且没有任何 OOP 方法。

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

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

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

【问题讨论】:

标签: encryption joomla passwords


【解决方案1】:

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

查看链接,希望对您有所帮助;)

【讨论】:

    【解决方案2】:

    您好,加密是由名为“PasswordHash.php”的类在 joomla 中位于 library/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/类的文档

    【讨论】:

    • @Dan 你会在configuration.php文件中得到所有需要的东西
    • 我在 configuration.php 中发现了一个秘密变量。但不幸的是,我不知道如何使用它来生成我需要的密码
    • “密语”与密码哈希无关。密码散列不是由 phphash 专门处理的。除非您使用的是过时版本的 php,否则请使用本机哈希。我只是从核心 cms 处理它的地方复制代码。
    【解决方案3】:

    谢谢你的回复

    我在页面中使用您的代码和表单,但输出 ($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) 密码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 2012-05-12
      • 2011-04-03
      • 2014-02-13
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多