//please ignore the syntax error if any
$data = '11';
$dbpass = password_hash($data, PASSWORD_BCRYPT);
echo $dbpass; // displays the random strings on each page refresh.
一旦密码保存到数据库中,在登录过程中不匹配。下面是我的实际功能。
private function process_data($password){
$password = __STR.$password.__STR;
return password_hash($password, PASSWORD_BCRYPT);
}
private function processed($login_password, $dbpassword){
$login_password = __STR.$login_password.__STR;
return password_verify($login_password, $dbpassword);
}
在每次为密码创建散列字符串的函数调用中,该函数下次返回不同的字符串。
好的,让我们一个一个地过一遍。
首先,它是散列,而不是加密。加密是双向的,哈希是单向的。我们要散列。我们从来不想加密。是的,术语很重要。请使用正确的术语。
接下来,每个对password_hash
的调用都应该返回一个不同的哈希。那是因为它产生了一种强烈的随机盐。这就是它的设计方式,也是你真正应该使用它的方式。
>
数据库列是否足够宽?
它需要至少有60个字符长。
是否检查函数的结果是字符串,而不是bool(false)
?
如果存在内部错误,它将从password_hash
返回一个非字符串。
你有什么错误吗?
您是否将error_reporting
打开到其最大设置(我建议-1
捕获所有内容),并检查代码没有引发任何错误?
你确定你使用的正确吗?
function saveUser($username, $password) {
$hash = password_hash($password, PASSWORD_BCRYPT);
// save $username and $hash to db
}
function login($username, $password) {
// fetch $hash from db
return password_verify($password, $hash);
}
请注意,每一个都应该只调用一次。
您是否使用PHP<5.3.7和password_compat?如果是这样,这就是你的问题。您正在不支持的PHP版本上使用同胞库。您可能会让它工作(某些RedHat发行版已经后移了必要的修复),但您使用的是一个不受支持的版本。请升级到合理的发布。
$hash = '$2y$04$usesomesillystringfore7hnbRJHxXVLeakoG8K30oukPsA.ztMG';
$test = crypt("password", $hash);
$pass = $test == $hash;
echo "Test for functionality of compat library: " . ($pass ? "Pass" : "Fail");
echo "\n";
本文向大家介绍php实现用户注册密码的crypt加密,包括了php实现用户注册密码的crypt加密的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php用户注册密码的加密,供大家参考,具体内容如下 一、代码 1、conn.php 2、index.php 3、index_ok.php 二、运行结果 注册成功后,数据库显示如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大
问题内容: 我想用Java加密和解密密码,然后以加密形式存储到数据库中。如果它是开源的,那就太好了。有什么建议/建议吗? 问题答案: 编辑 :这个答案是旧的。现在 不建议 使用MD5,因为它很容易被破坏。 我想象中的MD5必须足够好?您可以使用MessageDigest实现它。 这里还列出了其他算法。 如果确实需要,这是它的第三方版本: Fast MD5
在查看了用于生成 Java MD5 和 SHA* 哈希的多个在线参考后,我注意到纯文本(文件字符串)之前经历了某些准备 PS:我想答案与Java和Digest对象如何处理它们的业务有关,我问这个问题的动机是为了理解这种行为,并可能获得一些深入解释这一点的文档/文献的参考资料。 丹科!
问题内容: 最近,我一直在尝试在互联网上偶然发现的登录脚本上实现自己的安全性。在尝试学习如何制作自己的脚本以为每个用户生成盐的努力之后,我偶然发现了。 据我了解(基于本页的阅读内容),当您使用时,盐已经在行中生成。这是真的? 我的另一个问题是,吃2种盐不是很聪明吗?一个直接在文件中,另一个在数据库中?这样,如果有人破坏了数据库中的盐,您仍然直接在文件中保留了盐吗?我在这里读到,存储盐从来都不是一个
问题内容: 我已经获得了用于加密的Java实现,但是很遗憾,我们是.net商店,并且无法将Java集成到我们的解决方案中。不幸的是,我也不是Java专家,所以我已经为此奋斗了几天,以为我最终会在这里寻求帮助。 我一直在寻找一种与Java加密工作方式相匹配的方法,并且已经找到了在c#中使用RijndaelManaged所需的分辨率。我真的很近。我在c#中返回的字符串与前半部分匹配,但后半部分不同。
我正在使用以下代码创建哈希密码和salt: 我正在数据库中存储HashedPassword和Salt。 现在我要验证用户登录时的密码: 这不起作用,我得到了一个完全不同的哈希密码,而不是存储在数据库中的密码。据我所知,您应该在用户登录时输入的密码之前预置salt,然后运行相同的哈希密码函数。上面不是等价于那个吗?