首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >盐化算法强度

盐化算法强度
EN

Stack Overflow用户
提问于 2010-01-03 20:54:44
回答 4查看 644关注 0票数 1

这3种创建盐的方法的优缺点是什么?

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

$salt = sha1(md5($password));

$salt = generate_random_number();

计算哈希:

代码语言:javascript
运行
复制
$hash = sha1($salt + $password);
EN

Stack Overflow用户

回答已采纳

发布于 2010-01-04 00:58:52

要回答这个问题,重要的是要知道盐是什么。

Salts是针对预先计算的表的攻击而设计的。例如彩虹桌。彩虹表是巨大的表,所有可能的密码变化达到一定的长度。(使用巧妙的内存/时间权衡。)

如果攻击者只想破解单个密码,他们不会提供任何优势。

如果满足以下条件,则上述语句不成立

  • 数据库不使用盐。那么就可以使用普通的彩虹桌了。
  • 盐太短了。如果盐太短,就和密码长了效果一样。
  • 这是一种和盐一样的普通盐。可以肯定的是,已经有一些彩虹表中包含了这种盐。

使用彩虹表的攻击者通常想要破解尽可能多的账户。

你的哪种方法最安全?

除了第三个方法之外,所有的方法都是不安全的。这是因为使用任何其他方法都允许攻击者计算整个数据库的彩虹表

因为盐依赖于密码。也不要让它依赖于用户名,这仍然允许攻击者为100个最常见的用户名创建一个彩虹表。

请牢记

  • 仅使用加密安全的随机生成器来计算盐。
  • 请勿使用MD5。它已经被认为是损坏的,请至少使用SHA1。
票数 10
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1994882

复制
相关文章

相似问题

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