cho*_*ovy 5 javascript passwords
在javascript中生成安全密码的最快方法是什么?
我希望它包含至少1个特殊字符和2个混合大小写.必须至少6个字符.
Ble*_*der 33
以下是一些有用的String
功能:
String.prototype.pick = function(min, max) {
var n, chars = '';
if (typeof max === 'undefined') {
n = min;
} else {
n = min + Math.floor(Math.random() * (max - min + 1));
}
for (var i = 0; i < n; i++) {
chars += this.charAt(Math.floor(Math.random() * this.length));
}
return chars;
};
// Credit to @Christoph: http://stackoverflow.com/a/962890/464744
String.prototype.shuffle = function() {
var array = this.split('');
var tmp, current, top = array.length;
if (top) while (--top) {
current = Math.floor(Math.random() * (top + 1));
tmp = array[current];
array[current] = array[top];
array[top] = tmp;
}
return array.join('');
};
Run Code Online (Sandbox Code Playgroud)
您的密码如下所示:
var specials = '!@#$%^&*()_+{}:"<>?\|[];\',./`~';
var lowercase = 'abcdefghijklmnopqrstuvwxyz';
var uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var numbers = '0123456789';
var all = specials + lowercase + uppercase + numbers;
var password = '';
password += specials.pick(1);
password += lowercase.pick(1);
password += uppercase.pick(1);
password += all.pick(3, 10);
password = password.shuffle();
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/Blender/ERCsD/6/
小智 5
我现在才得到这个职位。如果您可以花几分钟时间看这篇文章,那么使用Math.random()是一个坏主意。
实际上,较新的浏览器中已有加密API,一旦开始使用加密技术,就必须立即使用它。
这就是为什么我建议使用使用著名加密API的My library的原因。它可以在服务器端和客户端(nodejs和浏览器)上工作。
mk-
归档时间: |
|
查看次数: |
12257 次 |
最近记录: |