首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Salt和密码

Salt和密码
EN

Stack Overflow用户
提问于 2012-10-04 10:06:53
回答 5查看 3.1K关注 0票数 23

可能重复: Secure hash and salt for PHP passwords

警告不要对密码使用MD5,使用类似bcrypt的替代方法

对于我的密码,我应该像这样使用salt ( salt对每个用户都是唯一的,而不是直接与密码一起存储).

代码语言:javascript
复制
$salt = sha1(md5("coders gonna code"));
$password = md5($salt.$password);

或者我可以用:

代码语言:javascript
复制
$password = md5($password);

因为如果我使用salt,即使用户提供了一个错误的密码,比如密码,也不重要,因为salt (在本例中)将是145ac26ff093c6e1317f7d5fb4c9fd11c77be975,所以密码的条目是145ac26ff093c6e1317f7d5fb4c9fd11c77be975password,根据http://howsecureismypassword.net/的说法,破解密码需要3个十亿万年.那么意见呢?或者我应该更糟然后去

代码语言:javascript
复制
$password = md5($salt.$password.md5($salt));

如果这个人已经做了足够多的事,得到了盐散列,还有什么能阻止他继续前进吗?<这是最后一个密码。

对每个用户都说我应该这么做的人。我知道这只是个例子。

EN

回答 5

Stack Overflow用户

发布于 2012-10-04 10:10:00

你完全不正确地使用盐。盐应该是不可预测的,你的盐和它完全相反。由于固定的散列绝对没有好处,所以您似乎还指望攻击者所不知道的盐分。这是通过默默无闻来确定安全的定义,这是另一种糟糕的做法。

你应该做的是:

  1. 使用不可预测的合理长度的字符串作为盐。从池中随机生成8个字符的字符串,例如小写/大写字母和数字。
  2. 为每个用户使用不同的salt,每次更改密码时都会更改它。
  3. 从MD5 (被认为已损坏)转移到另一个更适合此应用程序的散列函数。沙-1更好,因为它没有被认为是坏的;bcrypt是最好的,因为它有一个可配置的负载因子。
票数 13
EN

Stack Overflow用户

发布于 2012-10-04 10:12:07

  1. 不要使用MD5作为您的散列算法,使用一些更安全的方法,例如SHA256甚至bcrypt
  2. 如果有人确实进入了你的数据库,他们将无法为常见的哈希或使用彩虹攻击等技术逆转密码。

http://michaelwright.me/php-password-storage

http://en.wikipedia.org/wiki/Bcrypt

票数 9
EN

Stack Overflow用户

发布于 2012-10-04 10:14:18

首先,您不应该直接存储md5,因为您已经对其进行了重新定义。PHP5.5将带来新的方法,可以轻松地在一行中创建和验证密码,在此之前,您可以使用compat (向前兼容)生成和验证安全密码散列。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12724935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档