PHP MD5为不同的输入返回相同的哈希
我想为我的站点创建一种身份验证系统,但我遇到了MD5函数的问题-它不能正常工作,请查看下面的代码片段:PHP MD5为不同的输入返回相同的哈希,php,md5,Php,Md5,我想为我的站点创建一种身份验证系统,但我遇到了MD5函数的问题-它不能正常工作,请查看下面的代码片段: $valid_request = 0; $login = ""; $passwordMD5 = ""; $hardwareidMD5 = ""; $hash1 = ""; $hash2 = ""; // a - username // b - hardwareid md5 hash // c - password md5 hash // d - hash of (a+b+c) // e - h
$valid_request = 0;
$login = "";
$passwordMD5 = "";
$hardwareidMD5 = "";
$hash1 = "";
$hash2 = "";
// a - username
// b - hardwareid md5 hash
// c - password md5 hash
// d - hash of (a+b+c)
// e - hash of (a+b+c+d)
if(isset($_GET['a']) && isset($_GET['b']) && isset($_GET['c'])
&& isset($_GET['d']) && isset($_GET['e']) )
{
$login = $_GET['a'];
if(strlen($login) <= 32 && strlen($login) >= 1 && isValid($login,1) === 1)
{
$passwordMD5 = $_GET['b'];
if(strlen($passwordMD5) === 32 && isValid($passwordMD5,2) === 1)
{
$hardwareidMD5 = $_GET['c'];
if(strlen($hardwareidMD5) === 32 && isValid($hardwareidMD5,2) === 1)
{
$valid_request = 1;
$hash1 = MD5($login+$passwordMD5+$hardwareidMD5);
$hash2 = MD5($login+$passwordMD5+$hardwareidMD5+$hash1);
echo "HASH1: $hash1\n"."HASH2: $hash2\n";
}else $valid_request = 0;
}else $valid_request = 0;
}else $valid_request = 0;
}else
$valid_request = 0;
它总是打印两次相同的md5,页面源如下所示:
HASH1: cfcd208495d565ef66e7dff9f98764da
HASH2: cfcd208495d565ef66e7dff9f98764da
问题是您试图将md5函数的参数与
+
而不是
连接起来
但是如果你允许,我想建议你不要再使用md5作为密码。请改用sha256。以下是指向说明的链接:
你对Javascript有很多偏见,伙计。你确定要一起添加(
++
)字符串吗?看看在新版本的PHP中如何散列密码。实际上,他应该使用密码散列API。他可能也应该在散列中加盐,但对于他的项目来说,这个简单的答案可能就足够了。有了新的api,所有的密码在默认情况下都是加盐的。
HASH1: cfcd208495d565ef66e7dff9f98764da
HASH2: cfcd208495d565ef66e7dff9f98764da