当前位置: 首页 > 面试题库 >

Joomla 3.2.1密码加密

吕永嘉
2023-03-14
问题内容

当用户在站点上注册时,我在密码表中的数据库joomla_users中查找,密码以以下格式存储:

  • $ P $ Do8QrURFT1r0NlWf0X / grdF / aMqwqK /

  • $ P $ DH38Lch9z508gJiop3A6u0whTity390

  • ........

但不采用文档中描述的形式(MD5 +“:” + SALT):

  • 1802ebc64051d5b4f4d1b408babb5020:0PHJDbnsyX05YpKbAuLYnw2VCzFMW2VK

我需要为我澄清这一点,因为我正在使用外部脚本检查用户凭据以检查密码是否匹配。

在我的PHP脚本中,我有将SALT与数据库密码分开的代码:

$parts   = explode( ':', $password_database );
$crypt   = $parts[0];
$salt   = $parts[1];

但是,如果没有结,我就不能这样做(:)


问题答案:

尝试这个,

以下代码创建了Joomla标准密码 (旧版本1.5、1.7等)

 jimport('joomla.user.helper');
 $salt = JUserHelper::genRandomPassword(32);
 $crypt = JUserHelper::getCryptedPassword($password_choose, $salt);
 $password = $crypt.':'.$salt;

Joomla 3.2+ 引入了PHP的密码算法 bcrypt, 但它要求最低PHP 5.3+。 如果您打算使用
bcrypt,请
确保您的服务器PHP版本能够做到这一点,请在此处阅读更多内容。

其他版本的Joomla使用以下方法Joomla 3.x

 jimport('joomla.user.helper');
 $yourpass = JUserHelper::hashPassword($password_choose);

较旧的算法在最新版本中也能正常工作,唯一的区别是较旧的版本创建了65个字符的密码,而新版本创建了34个字符串。 总是与更新版本一起使用

另外,如果您使用的是外部脚本,则应包括如下所示的Joomla框架。这应该在您的外部php文件的顶部

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );//this is when we are in the root
define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

您还提到了必须检查用户凭据,然后无需检查密码格式,并且在框架加载后,所有内容都只使用以下代码。

   $credentials['username'] = $data['username']; //user entered name
   $credentials['password'] = $data['password']; //users entered password
   $app = JFactory::getApplication();
   $error = $app->login($credentials, $options);
   if (!JError::isError($error)) {
    // login success
    }
  else{
    //Failed attempt
   }

希望能帮助到你..



 类似资料:
  • 问题内容: 我已经以加密格式将用户密码存储在数据库中。但是,现在,当用户想要登录并尝试输入其原始密码时,该代码始终会将输入的(原始)密码与数据库中存储的加密版本进行比较,从而导致登录失败。 请告诉我如何比较输入的(原始)密码和存储在数据库中的加密密码。 问题答案: 几乎可以肯定,您应该对密码进行 哈希处理 ,而不是使用可逆加密。您可能还需要 用盐 来做…在这种情况下,正确的步骤是: 查找最初对密码

  • 在FTPS中,密码在尝试通过internet连接服务器时被加密。这就是我所理解的,如果我的理解有任何遗漏,请更正。我的问题是,当我厌倦了模拟它(FTPs和FTP)时,我只是得到一条消息,说SSL已经建立(以及基于隐式和显式调用的端口更改)。 是否有任何其他方式来确认密码是真正加密的,或者我们可以看到密码时,它的普通FTP。下面是我在服务器端看到的日志 启用FTP时的服务器日志- 状态:TLS/SS

  • cmf_password($pw, $authCode = '') 功能 CMF密码加密方法 参数 $pw: string 要加密的原始密码 $authCode: string 加密字符串 返回 string 加密后的密码 例子 echo cmf_password('666666');

  • 问题内容: 我正在尝试学习如何使用Java进行基于密码的加密。我在网上找到了几个示例,但在Stack Overflow上还没有(到目前为止)。这些示例对我的解释不大,尤其是在算法选择方面。似乎有很多传递字符串来说明要使用什么算法,但是很少有关于字符串来自何处以及含义的文档。而且似乎不同的算法可能需要KeySpec类的不同实现,所以我不确定哪种算法可以使用我正在查看的PBEKeySpec类。此外,所

  • 问题内容: 我需要访问joomla用户表以从外部php脚本[codeignitor]进行登录检查。 joomla这样存储密码 看起来这不是正常的MD5,所以我无法使用。 创建密码的可能方式是什么? 谢谢。 问题答案: Joomla密码是经过MD5哈希处理的,但是在哈希处理之前,已对密码进行了固定处理。它们被存储在数据库中,因为此盐是长度为32个字符的随机字符串。 因此,要创建一个新的密码哈希, 编

  • 我们是ActiveMQ新手,已经阅读了关于加密密码的文档。 本文档介绍如何设置环境变量(即ACTIVEMQ\u ENCRYPTION\u PASSWORD)以保存加密密码,启动ACTIVEMQ,然后取消设置该环境变量。但是,在服务器重启的情况下,这将如何工作呢?我们无法将该加密密码放入任何systemd服务文件。 我们的安全策略不允许加密密码保留在任何配置或设置文件中,特别是因为解密机制也可以通过

  • cmf_password($pw, $authCode = '') 功能 CMF密码加密方法 参数 $pw: string 要加密的原始密码 $authCode: string 加密字符串 返回 string 加密后的密码 例子 echo cmf_password('666666');

  • 在“摘要认证的密码加密”一节,我们讲到了如何在摘要认证中使用密码加密。但同时也提到了一些限制,比如,该加密方式只能适用于摘要认证,而且摘要认证,只能采用该种方式进行密码加密。那幺,我们如何在其他认证类型(如基本认证、Form表单认证)中进行用户信息的加密呢?本节为你揭开谜底。 在 basic-authentication项目的基础上,我们构建了一个password-encoder项目。 build