哈希散列是否更安全?

Jac*_*ill 5 php encryption passwords cryptography sha1

可能重复:
"双重散列"密码是否比仅仅散列一次密码更安全?

我在PHP中使用sha1加密密码,但我想知道散列散列是否比散列密码更安全.

例如:

$hash = sha1($pwd);
Run Code Online (Sandbox Code Playgroud)

任何不太安全的

$hash = sha1(sha1($pwd));
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它不会,因为反向查找站点将无法找到哈希哈希的匹配.

Web*_*ist -1

首先,与 sha1 一样弱的是它比明文存储的密码更好。任何加密、散列或其他混淆都比明文好得多!

sha1 的问题在于它的速度很快,因此生成要破解的哈希值也很快。加盐有很大帮助,但是如果您的服务器受到损害并且您将盐散列作为字符串存储在某处,那么这种优势就会消失......

如果您不想使用 mcrypt 或其他加密方法,您可以像这样混合 sha1 哈希:

$my_super_sha1_hash = 
sha1(
    sha1(
        substr(
            sha1($username)
            , 0
            , strlen($password) 
        )
    )
    .sha1(
        substr(
            sha1($password)
            , 0
            , 40-strlen($password)
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

通过将用户名和密码混合在一起,并使用(未知)密码的长度来确定在刺痛中使用每个密码的哪些位,然后再次进行哈希处理,每个盐都是唯一的但不是随机的,因此结果在所有盐中都是一致的用户并且更难破解,因为必须考虑密码和用户名的字符串长度。