Passwords 如何解密此脚本?

Passwords 如何解密此脚本?,passwords,encryption,Passwords,Encryption,如何解密按如下方式加密的密码: function PwdHash($pwd, $salt = null) { if ($salt === null) { $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH); } else { $salt = substr($salt, 0, SALT_LENGTH); } return $salt . sha1(

如何解密按如下方式加密的密码:

function PwdHash($pwd, $salt = null)
{
    if ($salt === null)     {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }
    else     {
        $salt = substr($salt, 0, SALT_LENGTH);
    }
    return $salt . sha1($pwd . $salt);
}

假设SALT_长度为9?

这不是一个函数,这是,所以根本不应该对它进行解密。唯一的方法是使用该算法,并希望最终得到冲突,但这可能需要很长时间。

这不是一个函数,这是,所以它根本不应该被解密。唯一的办法是使用此算法进行暴力,希望最终发生碰撞,但这可能需要很长时间。

暴力或忘记它。如果你的牛已经被切碎了,你就无法找回它。散列也是如此。而且rand在加密方面不安全,因此将其用作盐发生器是一个糟糕的想法。此外,考虑到GPGPU的广泛可用性,如今将md5用于散列几乎毫无意义。使用,甚至。暴力,或者忘记它。如果你的牛已经被切碎了,你就不能把它弄回来。散列也是如此。而且rand在加密方面不安全,因此将其用作盐发生器是一个糟糕的想法。此外,考虑到GPGPU的广泛可用性,如今将md5用于散列几乎毫无意义。使用,甚至。我必须检查所有可能的单词?@digushi是的,你必须检查,不仅是单词,而且是哈希字符串中使用的所有可能的字符组合。是的。正如您所理解的,md5的一个特性是,给定一个散列,在计算上不可能找到一个散列到它的字符串。虽然一些新的研究正在进行,但实际上,没有专门的硬件是不可行的。我必须检查所有可能的单词?@digushi是的,你必须检查,不仅是单词,而且是哈希字符串中使用的所有可能的字符组合。是的。正如您所理解的,md5的一个特性是,给定一个散列,在计算上不可能找到一个散列到它的字符串。虽然一些新的研究正在进行,但实际上,没有专门的硬件是不可行的。