我需要知道hash() o password_hash()
我正在制作应用程序的机制,并且我想加密以便将其存储在数据库中,并且当我想比较登录时输入的字符串时,它不会引发错误。例如
$pass="pepito";
$hashed_pass = password_hash($pass, PASSWORD_DEFAULT);
insert into tabla (password) values ($hashed_pass);
当我去咨询时,返回值,但解密发送加密的值
例如
$pass="pepito";
select password from tabla where password = $pass;
显然它会给我一个错误,因为在我必须将密码传递给哈希算法之前,但是我做了一些测试,每次我哈希它时,它都会完全改变算法,这会阻止我比较数据库中的密码并带来我的价值观
帮助,谢谢。
我将为您提供一个如何使用安全方法保存密码的示例
password_hash()
,我不会应用一个示例,因为例如md5
有些页面我们可以轻松地解密密码md5
。http://md5cracker.org/
让我们看看它是如何工作的
password_hash()
,它使用强大的单向哈希算法创建一个新的密码哈希。password_hash() 与 crypt() 兼容。因此,使用 crypt() 创建的密码哈希可以与 password_hash() 一起使用。现在我们看看如何验证插入的密码
hash_equals
。hash_equals
— 针对定时攻击的安全字符串比较真的不建议保存这么容易解密的密码。如果最终密码可以通过通用方法破解,那么保持加密的意义何在?
通常的做法是保存加密密码(例如MD5或SHA1),然后在进行比较时,写入要比较的字符串并与已存储在数据库中的加密密码进行比较。您可以使用 MD5 或 SHA1 函数在 PHP 或 MySQL 级别执行此加密。我给你一个链接,他们在最后讨论这个话题:http: //blog.aulaformativa.com/consultorio-desarrollo-web/
像密码一样,它用它加密
password_hash
并返回一个字符串,如:有一个函数可以比较哈希是否对应于以纯文本输入的密码。
password_verify
返回TRUE
或FALSE
。早上好。
我在将密码保存在 MD5 中时如何加密密码,我使用:
$password = md5($_POST['password'])
并插入我做:insert into tabla values ($password);
要进行查询,我会
根据他们告诉我的内容,我能够将这段代码放在一起:
我输入了已经散列的密码,它们在数据库中已经是这样了,我做了这个代码:
现在我想比较密码,例如
2000000
. 我把这样的代码放在一起:但是我做不到,它返回给我“不一样”,我做错了什么?