crypt password storage and retrival php
我正在尝试使用crypt()设置安全的登录和注册系统,因为我已经知道这是php用于bcrypt的存储函数
我正在注册用户,但需要输入他们的密码,然后再对其进行加密。
1 |
然后,我将$ hashed_password存储在数据库中
然后当用户登录时,我试图将密码与所存储的密码匹配。
我在php.net上找到了此功能,但无法正常工作
$ password是存储的加密密码,$ mypassword是用户输入
1 2 3 |
我知道crypt每次调用都会生成一个唯一的哈希,因此我不了解该函数的工作方式。
当我读到crypt()是一个函数并且不存在解密时,我是否完全没注意到这一点?
非常感谢您提供的任何帮助,不仅显示了我的方法的错误,而且还完成了此安全登录
您在
1 2 3 4 |
但是PHP为哈希例程提供了本机功能-如果5.5版本引入了PHP,则称为密码哈希。
对于低于5.5至5.3.7的PHP版本,有一个向后移植的兼容性功能,其功能相同:https://github.com/ircmaxell/password_compat只需将其包含并使用即可。
但是请注意,您必须从数据库中读取哈希密码,然后将其与PHP进行比较。您无法使用新创建的密码哈希查询数据库来查找用户。
假设来自数据库的加密密码为
1 2 3 |
这篇文章会有所帮助...
您在这里需要执行几个步骤。但是,本教程将有所帮助:
http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL
本质上,您想在数据库中加密密码-例如。因此,如果密码为" mypassword",它将存储在一些随机字符串中,例如" 3ifdgk5ty = -dlsfs"。
在sha1上读取(不再认为md5安全)。从未使用过自己的地穴,但是与盐结合使用时sha1()似乎对我有用(附加的文本字符串添加到密码中,使破解黑客更难)
您不能解密它,因为哈希是一种方法。因此,您无法通过哈希获取原始输入。即使您有权访问数据库,也无法显示用户密码。
它的用法如下:
用户将密码写入输入->提交表单->密码进入数据库,如下所示:
然后将此哈希密码存储在数据库中。
每当用户想要登录时,他都会再次提交表单,并且此逻辑(
1 2 3 | if(sha1($_POST['password']) == $result['password']) { //password match, so lets log you -> set sessions, cookies and so on } |