两个字符串之间的sha256哈希冲突

时间:2018-10-31 10:04:51

标签: php encryption hash sha256 sha

我必须找到两个在URL中作为参数'str1'和'str2'传递的字符串,并满足这些条件?

if($_GET['str1'] !== $_GET['str2'] and $_GET['str1'] and $_GET['str2']) 
{
    $hash1 = hash('sha256', $salt . $_GET['str1']);
    $hash2 = hash('sha256', $salt . $_GET['str2']);

    if($hash1 === $hash2) {
       #print str1 and str2
    }

}

我将如何查找?

1 个答案:

答案 0 :(得分:4)

唯一的中断解决方案是使哈希函数不起作用。
哈希函数需要字符串输入(或将类型转换为字符串),因此将输入作为数组将破坏哈希,并且都返回false /不起作用。
两者的含义严格相同。

这是一个骗子,但它可以满足当前代码的所有要求。

<?php
$_GET['str1'] = ["a"];
$_GET['str2'] = ["b"];
$salt = "aaabdnelnFnekknfn";

if($_GET['str1'] !== $_GET['str2'] and $_GET['str1'] and $_GET['str2']) 
{
    $hash1 = hash('sha256', $salt . $_GET['str1']);
    $hash2 = hash('sha256', $salt . $_GET['str2']);

    if($hash1 === $hash2) {
       var_dump($_GET['str1'],$_GET['str2']);
    }

}

https://3v4l.org/SPYKb