2012-07-25 51 views
5

我想在未安装TYPO3的外部网站上创建TYPO3的自定义注册组件(我只是使用它的数据库)。问题是我没有使用TYPO3的经验。我想知道是否有人知道如何为TYPO3创建正确的密码加密?该密码是这样的:使用PHP创建TYPO3腌制密码?

$ P $ CEO/XYcbzRH9nLpCwKdp1HhsJGwJum0

我要寻找一个PHP代码来创建相同的加密和校验密码。我有安装工具的加密密钥(我相信)用于腌制。

或者是否有将密码保存为MD5的可能性?不是最好的选择,但我可以成为唯一的选择。

我发现这个网址: http://srv123.typo3.org/TYPO3/Extensions/saltedpasswords/4.6/#compatibility-of-other-extensions-with-salted-user-password-hashes

但我不知道如何实现,在我自己的脚本。

+1

不要加密密码!由于开发人员认为他们需要解密密码,因此现在无处不在......也不要使用MD5(),它已经被黑客入侵了。也看看这个问题http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – 2012-07-25 09:20:27

回答

2

通过查看哈希提供我猜想saltedpasswords扩展(负责在数据库中存储盐腌哈希)在TYPO3被设置为使用phpass。因此,您应该能够参加此课程并在脚本中使用它来创建/检查密码,就像TYPO3一样。

或者是否有将密码保存为MD5的可能性?

是的,在TYPO3中使用盐渍密码是可选的,并非强制性的。但是,如果将来任何TYPO3安装应该使用该数据库,我不确定TYPO3如何处理混合记录,当其中一些将密码存储为无盐哈希和一些盐时。我的猜测是,它会优雅地处理它,认识到每个散列使用哪个检查。

+0

你没有在你的问题中解释为什么TYPO3数据库正在被使用,它是否已经包含一些记录,以及将来它是否会被一些TYPO3安装使用,所以我的答案可能不完全准确。 – tmt 2012-07-25 11:34:48

+0

数据库仅用于前端用户在其他网站上登录以查看某些页面。注册等都在Typo3网站上处理。这就是为什么我只需要腌制密码。就MD5而言,我可以直接在MD中放入MD5通道。登录后,MD5会自动由Typo3转换为盐渍密码。 – 2012-07-25 11:49:18

+0

感谢cascaval,只是我需要以正确的方式指导我的答案。腌制密码确实设置为使用phpass。我在http://www.openwall.com/phpass下载了框架,并设法创建了散列,我可以与db中的散列进行比较。我需要设置'$ hash_portable = TRUE;'就是这样。非常感谢你的帮助。 – 2012-07-25 12:50:31

7

看一看开发指南:

1.5.1 Creating a new salted user password hash from a given plain-text password

你必须在TYPO3,前端使用它:

$password = 'XXX'; // plain-text password 
$saltedPassword = ''; 

if (t3lib_extMgm::isLoaded('saltedpasswords')) { 
    if (tx_saltedpasswords_div::isUsageEnabled('FE')) { 
    $objSalt = tx_saltedpasswords_salts_factory::getSaltingInstance(NULL); 
    if (is_object($objSalt)) { 
     $saltedPassword = $objSalt->getHashedPassword($password); 
    } 
    } 
} 

,你不应该试图生成盐渍typo3以外的密码,因为加密取决于您的typo3设置。

+0

这就是事。我不想在Typo3前端使用它。 – 2012-07-25 09:32:03

13

文选TYPO3 6.X:

$password = 'XXX'; // plain-text password 
    $saltedPassword = ''; 

    if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('saltedpasswords')) { 
     if (\TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) { 
      $objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(NULL); 
      if (is_object($objSalt)) { 
       $saltedPassword = $objSalt->getHashedPassword($password); 
      } 
     } 
    }