我面临着永无止境的问题如何在数据库中存储密码?. 据我最近读到的,有一些以前被认为是安全的算法,它们被标记为不安全的。所以我正在努力寻找一个最新的资源来描述那些不再安全的资源。
我正在考虑结合两个或三个算法,但我记得在那天它被认为是不安全的,即将散列暴露给攻击。我想到的组合是这样的:
data_h1 = sha256(sha1(data_salt).sha1([username|email]).sha1(data_peper))
data_h2 = sha256(sha1(data_salt).sha1(user_entered_password).sha1(data_pepper))
hmac(
sha512,
data,
sha512(general_salt.data_h1.data_h2.general_pepper)
);
其中data_salt和data_pepper是常量,硬编码到应用程序中,但不同于general_salt 和 general_pepper,它们也是硬编码的常量。[username|email]是用户在注册和登录时提供的值,以及 *user_entered_password* (doh!)。
- 这会以某种方式损害安全性吗?(如果没有转到下一个)
- 由于在生成过程中将发生的 hash-o-mania 是否会出现重大瓶颈?(转到下一个)
- 关于上述方法的任何建议?
我的问题是关于 PHP 的,但是很高兴看到你们会推荐什么以及您的评论一般是什么,b`cuz 我确实认为这是非常常见的任务,许多人仍然只使用 MD5 或 SHA1(或更好的是,以纯文本形式存储)。