我正在使用CodeIgniter,并且正在创建用户需要登录的网站部分。我一直在阅读有关将密码存储为MD5哈希值和使用salt加密字符串的信息,但我没有看到任何有关解密的内容。
加密密码尝试是否有效/安全,与存储密码尝试时的加密相同,以检查验证?
这是在php应用程序中存储密码或使用CodeIgniter Framework的推荐方法吗?
答案 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);