<分区>
我有一种情况,我希望能够在我的系统的 Web 界面中对用户密码进行评分,以便在他们点击提交之前,他们知道他们的密码是否错误。
关键要求:
- 必须能够评价密码,而不仅仅是通过/失败。
- 如果密码低于阈值,应该禁用表单,这样用户就无法提交。
- 看起来不错。 :)
- 不使用 jQuery - 我们目前在此系统中使用 Mochikit 和 Y!UI。
我发现了许多用 jQuery 编写的密码表,以及诸如 http://www.passwordmeter.com/ 之类的东西太冗长了。
任何人都可以建议我可以使用的 javascript 密码评分器的一个很好的下降,或者给出一个如何编写的例子吗?
更新:在这里创建了一个 js fiddle 以实时查看:http://jsfiddle.net/HFMvX/
我进行了大量的谷歌搜索,但没有找到任何令人满意的东西。我喜欢 passpack 的做法,所以基本上对他们的方法进行了逆向工程,我们开始吧:
function scorePassword(pass) {
var score = 0;
if (!pass)
return score;
// award every unique letter until 5 repetitions
var letters = new Object();
for (var i=0; i<pass.length; i++) {
letters[pass[i]] = (letters[pass[i]] || 0) + 1;
score += 5.0 / letters[pass[i]];
}
// bonus points for mixing it up
var variations = {
digits: /\d/.test(pass),
lower: /[a-z]/.test(pass),
upper: /[A-Z]/.test(pass),
nonWords: /\W/.test(pass),
}
var variationCount = 0;
for (var check in variations) {
variationCount += (variations[check] == true) ? 1 : 0;
}
score += (variationCount - 1) * 10;
return parseInt(score);
}
好的密码开始得分在 60 左右,这里是将其翻译成文字的函数:
function checkPassStrength(pass) {
var score = scorePassword(pass);
if (score > 80)
return "strong";
if (score > 60)
return "good";
if (score >= 30)
return "weak";
return "";
}
你可能想稍微调整一下,但我发现它很适合我