【问题标题】:What is Joomla 2.5 Password Encryption method?什么是 Joomla 2.5 密码加密方法?
【发布时间】:2012-11-30 06:16:09
【问题描述】:

我正在使用 Joomla 2.5 开发一个网站。我已经为上述父站点添加了另一个示例站点。从这个子站点,我将向数据库添加新用户。但是这两个网站是使用不同的方法来加密密码的。

我在网上找到了 Joomla 加密的东西,但它似乎不起作用。

function genRandomPassword($length=32) 
{
$salt       = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$makepass   = '';
mt_srand(10000000*(double)microtime());
for ($i = 0; $i < $length; $i++)
    $makepass .= $salt[mt_rand(0,61)];
return $makepass;
}

    if ( strlen($_POST['pwd']) > 100 )
    {
        $_POST['pwd'] = substr( $_POST['pwd'], 0, 100 );
    }

    $salt = genRandomPassword();
    $pass= md5(stripslashes($_POST['pwd']).$salt) .':'.$salt;

这不是方法还是我哪里做错了?

谢谢

【问题讨论】:

标签: php passwords joomla2.5


【解决方案1】:

我找到了答案: A. 用户输入的密码 - 'testing'

B.从您为该用户保存的数据库记录中获取:5cf56p85sf15lpyf30c3fd19819p58ly:aNs1L5PajsIscupUskaNdPenustelsPe

C.将用户密码与记录的第二部分连接起来(从步骤 -> testingaNs1L5PajsIscupUskaNdPenustelsPe

D.生成步骤C的MD5

E.将步骤 C 的结果与步骤 B 的第一部分记录 (5cf56p85sf15lpyf30c3fd19819p58ly) 进行比较,如果相同则表示用户输入了正确的密码

【讨论】:

    【解决方案2】:

    终于找到了路;认为这会对其他人有所帮助:)

        if ( strlen($_POST['pwd']) > 100 )
         {
            $_POST['pwd'] = substr( $_POST['pwd'], 0, 100 );
         }
    
         $salt = genRandomPassword();
        //$pass is the encripted password
         $pass= md5(stripslashes($_POST['pwd']).$salt) .':'.$salt;
    

    哈希生成如下:

        function genRandomPassword($length = 32)
        {
         $salt = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
         $len = strlen($salt);
         $makepass = '';
         mt_srand(10000000 * (double) microtime());
    
         for ($i = 0; $i < $length; $i ++) {
            $makepass .= $salt[mt_rand(0, $len -1)];
         }
    
         return $makepass;
        }
    

    【讨论】:

      【解决方案3】:

      我不认为我们可以在新的 joomla 版本中获得盐分。 joomla 不再使用用“:”分隔密码和盐的模式。

      我必须使用 joomla 用户名和密码从外部源登录用户。这适用于 2.5.24(因为我在使用这个版本时工作过。希望它也适用于 joomla 3.x.x)

      我正在使用调用函数中的以下代码来执行此登录功能

      onUserAuthenticate($credentials, $options, &$response)
      

      这是我用于登录用户的方式:

       // Get a database object
      $db   = JFactory::getDbo();
      $query   = $db->getQuery(true);
      
      $query->select('id, password');
      $query->from('#__users');
      $query->where('username=' . $db->Quote($credentials['username']). 'OR email=' . $db->Quote($credentials['username'])) ;
      
      $db->setQuery( $query );
      $result = $db->loadObject();
      
      //######################
      
      
      
      if ($result)
      {
         $match = JUserHelper::verifyPassword($credentials['password'], $result->password, $result->id);
            if ($match === true)
         {
            $user = JUser::getInstance($result->id); // Bring this in line with the rest of the system
            // echo 'here'; print_r($user);die('xxxxxssyyyyyyeeeeesssss');
            $response->email = $user->email;
            $response->fullname = $user->name;
      
            if (JFactory::getApplication()->isAdmin())
            {
               $response->language = $user->getParam('admin_language');
            }
            else
            {
               $response->language = $user->getParam('language');
            }
            $response->status = JAuthentication::STATUS_SUCCESS;
            $response->error_message = '';
         }
      }
      

      希望这对某人有所帮助!

      【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2011-06-29
      • 2012-05-12
      • 2022-01-25
      • 2016-02-06
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多