PHP md5和sha1混淆-为什么我会得到不同的加密结果?
我在php页面中有一个名为encrypt_password的php函数,我在处理注册表时使用该函数:PHP md5和sha1混淆-为什么我会得到不同的加密结果?,php,encryption,passwords,md5,sha1,Php,Encryption,Passwords,Md5,Sha1,我在php页面中有一个名为encrypt_password的php函数,我在处理注册表时使用该函数: function encrypt_password($password){ $salt = sha1(md5($password)); $password = md5($password.$salt); return $password; } 我尝试在处理登录表单时再次使用它,但得到的结果不同 我只是通过不调用此函数而只是调用以下函数来获得正确的结果: $salt
function encrypt_password($password){
$salt = sha1(md5($password));
$password = md5($password.$salt);
return $password;
}
我尝试在处理登录表单时再次使用它,但得到的结果不同
我只是通过不调用此函数而只是调用以下函数来获得正确的结果:
$salt = sha1(md5($password));
$password = md5($password.$salt);
直接在我的流程登录页面上。为什么调用encrypt_password会得到不同的结果
我希望我已经解释清楚了!
谢谢 是的,我检查了代码,没有错误。这是我的代码,没有任何缺陷:
function encrypt_password($password){
$salt = sha1(md5($password));
$password = md5($password.$salt);
return $password;
}
$myPassword = "test";
echo encrypt_password($myPassword );
// this gives me 34364c859afb02e70306c905374ac2d5
$salt = sha1(md5($myPassword));
$password = md5($myPassword.$salt);
echo "<br />";
echo $password;
//this gives me 34364c859afb02e70306c905374ac2d5
函数加密密码($password){
$salt=sha1(md5($password));
$password=md5($password.$salt);
返回$password;
}
$myPassword=“test”;
echo encrypt_密码($myPassword);
//这给了我34364c859afb02e70306c905374ac2d5
$salt=sha1(md5($myPassword));
$password=md5($myPassword.$salt);
回声“
”;
echo$密码;
//这给了我34364c859afb02e70306c905374ac2d5
所以,它们是一样的。和Dimme一样,我对变量名也有同样的想法。但我无法复制这一点。对不起…我简直不敢相信这是真的。你说你有两个页面,一个是登记表,另一个是登录表 他们都必须加密用户发布的密码 这里可能有很多错误,这取决于你如何发现它们不匹配。您是否只是尝试登录并看到密码错误?或者在调用
encrypt\u password
后是否回显密码哈希?如果能在注册页面和登录页面向我们展示密码“test”的散列,那就太好了。也许有人能看到一种模式
不管怎样,让我猜猜:
md5(密码)
来注册,然后你读了一些不安全的地方并加了盐。现在比较同一密码的两个不同哈希,因为密码是使用旧的哈希函数存储在数据库中的李>
$password=$\u POST['password']设置$password
代码>我猜。我想这两页也是。这两页上的语句都没有打字错误吗?否$password=$\u POST['pasword']代码>那里?这两个
元素是否都命名为“password”
检查db中密码字段的长度哈希后的值增加到您在db中指定的限制我认为您不会这样做。你能再给我看一点代码吗?。。。也许您每次都应该为它提供相同的密码;)为什么不为所有的值显示一些示例,而不是争论呢?不管bug的来源是什么,您似乎通过哈希密码生成了一个“salt”。请注意,这不是salt,对攻击的抵抗力非常弱(这对使用预计算表的攻击是完全开放的,例如“彩虹表”,这正是真正的salt会阻止的,而您的not salt则不会)。此外,您的密码散列方案只使用了三个嵌套的散列调用,这是一个更大的弱点(这里应该有数千次,甚至数百万次的调用)。记住一件曾经发生在我身上的事。不知怎的,我在密码字段上传递了一个额外的空格。尝试回显您在表单中传递的变量。您不提供任何解决方案。除此之外,您的代码可能与user1050479的.LOL不完全相同。我复制了你的。。。你才是有这个问题的人,不是我。。。还是变暗