CodeIgniter密码加密和验证

时间:2013-05-30 22:33:36

标签: php codeigniter encryption passwords

我正在使用CodeIgniter,并且正在创建用户需要登录的网站部分。我一直在阅读有关将密码存储为MD5哈希值和使用salt加密字符串的信息,但我没有看到任何有关解密的内容。

加密密码尝试是否有效/安全,与存储密码尝试时的加密相同,以检查验证?

这是在php应用程序中存储密码或使用CodeIgniter Framework的推荐方法吗?

6 个答案:

答案 0 :(得分:2)

已经有auth库“准备好了”(开箱即用),这里是另一个与此类似的问题的链接 http://www.stackoverflow.com/questions/346980/how-should-i-choose-an-authentication-library-for-codeigniter
note 我喜欢Tank Auth和“groups”。

答案 1 :(得分:1)

CodeIgniter使用名为“Tank Auth”的库:http://konyukhov.com/soft/tank_auth/ 它包括“PasswordHash.php”类:http://bit.ly/1gahwtT

示例代码:

require "PasswordHash.php";

define("phpass_hash_portable",TRUE);
define("phpass_hash_strength",8);

$hasher = new PasswordHash(phpass_hash_strength,phpass_hash_portable);
if ($hasher->CheckPassword($password_to_check, $original_encoded_password)) {
    echo "password correct";
} else {
    echo "password incorrect";
}

答案 2 :(得分:0)

对你的答案的两条评论显示了良好答案的链接,添加更多。如果你只是进行散列,你也可以使用crypt。密码不同于mcrypt欺骗了我一次。可以在laravel3 Hash class上找到crypt的示例。或者您也可以使用php pass,这是一个利用OpenBSD风格的基于Blowfish的bcrypt的库。

感谢神秘,ircmaxell还有一个散列库检查here

答案 3 :(得分:0)

请勿使用md5或base64。 Sha1也破了。最好使用bcrypt。

您可以将此library与codeigniter一起使用来验证bcrypt密码

答案 4 :(得分:-2)

密码以散列格式存储,因为在大多数情况下,不需要将密码恢复为原始字符串。 md5函数生成一个唯一的32个字母长的字符串,可以通过比较两个哈希值来验证。回答你的问题:

  
      
  • 是的,这是保存密码的标准方法。

  •   
  • MD5不再足够安全,所以大多数人都开始使用php hash

  •   
     

功能与算法'sha512'和盐当然。

答案 5 :(得分:-3)

这个功能可能会对你充分使用..

$this->load->library('encrypt');
$this->encrypt->sha1($yaourpassword);