创建“忘记密码”机制时,我们可能希望为使用SHA1存储的用户创建一个临时密码(随意建议使用其他C#加密机制)。
我们应该多久制作一次临时密码?太短了,可能是暴力强迫。太长了,不必要的长度是多余的,因为字符串仍然是哈希值? (因为20个字符和50个字符的字符串会产生相同长度的哈希值)
更新
对不起,如果这是误导。当然我们可以在空中挑选一个数字,但我想知道是否有一个很好的数学理由来选择13而不是12。
答案 0 :(得分:1)
我一般用10个字符。没有特别的原因,只是我猜测的是用户选择的密码的平均长度。
只是它是随机生成的,它可能比用户选择的任何东西更安全,更难以暴力。人们选择愚蠢的密码,如myspace1,stackoverflow1,12341234等。
答案 1 :(得分:1)
答案 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个不同的密码:
他还解释了背后的原因。这是一个很好的阅读。希望这会有所帮助。
答案 6 :(得分:0)
根据用户推荐的网站指定的长度。当生成一个随机的base64字符串时,我会在晚上用8-char密码安全地睡觉。但是我当然会将登录尝试限制为每X秒一次,并在Y尝试失败后暂时禁用帐户。
请记住在散列之前添加每用户唯一的 salt ,以阻止基于数据库的攻击。</ p>