Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MD5为不同的输入返回相同的哈希_Php_Md5 - Fatal编程技术网

PHP 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

我想为我的站点创建一种身份验证系统,但我遇到了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 - 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