最近在写后台管理系统,遇到一个需求,需要自动生成一个随机分配的16位的密钥:
密钥一般都是由字母 数字 特殊字符等组成的,因此可以通过下面的方法来自动生成密钥。
getmm(num=16) {
var amm = ["!", "@", "#", "$", "%", "&", "*", "(", ")", "_",1,2,3,4,5,6,7,8,9];
var tmp = Math.floor(Math.random() * num);
var s = tmp;
s = s + amm[tmp];
for (let i = 0; i < 7; i++) {
tmp = Math.floor(Math.random() * 26);
s = s + String.fromCharCode(65 + tmp);
}
for (let i = 0; i < 7; i++) {
tmp = Math.floor(Math.random() * 26);
s = s + String.fromCharCode(97 + tmp);
}
return s;
},
通过上面的方法,则可以直接生成16位的密钥了,函数的入参num
在生成随机数的时候是有用到的,但是在两次for
循环时并没有用到,这样时不太好的,如果想要生成其它位数的密钥,则只更改num
是不太对的,需要将for
循环中的数字也一并修改掉才行。
此时可以将上面的函数改为:
getmm(num=16) {
var amm = ["!", "@", "#", "$", "%", "&", "*", "(", ")", "_",1,2,3,4,5,6,7,8,9];
var tmp = Math.floor(Math.random() * num);
var s = tmp;
s = s + amm[tmp];
for (let i = 0; i < Math.floor(num/2)-1; i++) {
tmp = Math.floor(Math.random() * 26);
s = s + String.fromCharCode(65 + tmp);
}
for (let i = 0; i < (num-Math.floor(num/2)-1); i++) {
tmp = Math.floor(Math.random() * 26);
s = s + String.fromCharCode(97 + tmp);
}
return s;
},
完成!!!