SHA哈希的最佳临时密码长度

时间:2009-04-01 09:42:40

标签: c# sha1 change-password

创建“忘记密码”机制时,我们可能希望为使用SHA1存储的用户创建一个临时密码(随意建议使用其他C#加密机制)。

我们应该多久制作一次临时密码?太短了,可能是暴力强迫。太长了,不必要的长度是多余的,因为字符串仍然是哈希值? (因为20个字符和50个字符的字符串会产生相同长度的哈希值)

更新
对不起,如果这是误导。当然我们可以在空中挑选一个数字,但我想知道是否有一个很好的数学理由来选择13而不是12。

7 个答案:

答案 0 :(得分:1)

我一般用10个字符。没有特别的原因,只是我猜测的是用户选择的密码的平均长度。

只是它是随机生成的,它可能比用户选择的任何东西更安全,更难以暴力。人们选择愚蠢的密码,如myspace1,stackoverflow1,12341234等。

答案 1 :(得分:1)

我认为这是关于临时密码的好建议:

The definitive guide to form-based website authentication

它谈到避免生成它们以支持达到用户想要的实际操作。

答案 2 :(得分:0)

如果密码是字母数字字符,那么每个字符只有大约6位可用数据,因此,如果密码长度不超过20个字符,那就错了。

答案 3 :(得分:0)

您似乎担心临时密码比用户密码更强...实际上,像10个字符的基础-64(或类似的 - 标点等)之类的东西将很难破解并且比用户生成的密码强得多....

答案 4 :(得分:0)

使它变成一个可变大小(比如说8-12个字符),这将使暴力变得更难......如果攻击者知道你返回一个X字符密码,他们所要做的就是用N来尝试所有密码。 ..假设N很大,那将是不切实际的,但改变N的大小至少会使它变得更难。

答案 5 :(得分:0)

Steve Gibson创建了一个“Ultra High Security Password Generator”。
在该页面上,他在每个页面显示上生成3个不同的密码:

  • 64个随机十六进制字符(0-9和A-F)
  • 63个随机可打印的ASCII字符
  • 63个随机字母数字字符(a-z,A-Z,0-9)

他还解释了背后的原因。这是一个很好的阅读。希望这会有所帮助。

答案 6 :(得分:0)

根据用户推荐的网站指定的长度。当生成一个随机的base64字符串时,我会在晚上用8-char密码安全地睡觉。但是我当然会将登录尝试限制为每X秒一次,并在Y尝试失败后暂时禁用帐户。

请记住在散列之前添加每用户唯一的 salt ,以阻止基于数据库的攻击。<​​/ p>