可能是重复的问题:
“双重哈希”比仅哈希一次密码不安全吗?
我正在使用PHP中的sha1加密密码,但我想知道将哈希函数再次应用于哈希值是否比仅对密码进行哈希更加安全。
例如:
是
$hash = sha1($pwd);
比任何不安全的都要不安全
$hash = sha1(sha1($pwd));
我认为这是没有问题的,因为反向查找网站无法找到哈希值的匹配项。
可能是重复的问题:
“双重哈希”比仅哈希一次密码不安全吗?
我正在使用PHP中的sha1加密密码,但我想知道将哈希函数再次应用于哈希值是否比仅对密码进行哈希更加安全。
例如:
是
$hash = sha1($pwd);
$hash = sha1(sha1($pwd));
我认为这是没有问题的,因为反向查找网站无法找到哈希值的匹配项。
password_hash()
和password_verify()
,以简化此任务。还有一个兼容性包可供下载,适用于PHP 5.3 / 5.4,在password_compat处提供。首先,虽然sha1本身很弱,但它比明文存储密码要好。任何加密、哈希或其他混淆方式都比明文更安全!
sha1的问题在于它速度很快,因此生成哈希值以进行破解也很快。加盐可以很好地解决这个问题,但如果您的服务器被攻击并且您的盐哈希值存储在某个字符串中,那么这个优势就不存在了...
如果您不想使用mcrypt或其他加密方法,可以像这样稍微混淆一下您的sha1哈希值:
$my_super_sha1_hash =
sha1(
sha1(
substr(
sha1($username)
, 0
, strlen($password)
)
)
.sha1(
substr(
sha1($password)
, 0
, 40-strlen($password)
)
)
);
sha1(sha1(username).sha1(password))
或者只是 sha1(username."|".password)
。 - CodesInChaos