在日常生活中,有时候我们需要创建多个比较复杂的随机字符串,如果一个个自己随便填写,比较杂乱而且强度也不高,那么该怎样使用js代码快速实现批量生成指定位数的随机密码字符呢?
首先我们先创建一个空白的html网页文件.
然后在js中添加一个mmrand(len,lx,fz,ts)函数,其中变量len来传递需要生成字符串的长度,lx来设置生成随机字符的类型,fz选择是否去除oOLlVv9gq灯易于混淆的字符,ts设置常用的特殊符号.
len:字符串长度,可以设置为任意数值
lx:参数为0,1,2,3,4,5 纯数字、纯大写字母、小写字母、数字加大写字母、数字加小写字母、数字大写小写字母混合.
fz:参数为0,1是否去除易于混淆的字符,0为不去除,1为去除容易与其他字符混淆的字母与数字.
ts:参数为0,1是否加入常用特殊符号,0代表不添加字符,1为添加特殊字符.
代码如下:
function mmrand(len,lx,fz,ts) {
len = len || 10;
var yhx=['019','OLVUI','olgqvu','019OLVUI','019olgqvu','019OLVUIolgqvu'];
var jmkey=[];
jmkey.push('2345678');
jmkey.push('ABCDEFGHJKMNPQRSTWXYZ');
jmkey.push('abcdefhijkmnprstwxyz');
jmkey.push('2345678ABCDEFGHJKMNPQRSTWXYZ');
jmkey.push('2345678abcdefhijkmnprstwxyz');
jmkey.push('2345678abcdefhijkmnprstwxyzABCDEFGHJKMNPQRSTWXYZ');
var pdsf="",yhxsf="";
if(ts==1){
pdsf='@#%&*+-~';
}
if(fz==0){
yhxsf=yhx[lx];
}
var keytxt=jmkey[lx]+yhxsf+pdsf;
var keylen = keytxt.length;
var pssword="";
for (i = 0; i < len; i++) {
pssword += keytxt.charAt(Math.floor(Math.random() * keylen));
}
return pssword;
}
这里大致简单介绍一下该函数的原理,将lx中需要生成的几种组合存储在jmkey数组中,易于混淆的字符也按照lx的顺序存放在yhx,这样做的好处是不用多次判断生成密码字符的组合种类直接最后在通过lx的参数数值在数组中直接调用相应的数据[组合类型].,然后两个if判断语句分别判断是否添加特殊字符,是则给变量pdsf,赋值否则为空,以及去不去出每种组合中容易混淆的字母与数字,如果不去出则赋值给变量yhxsf.
var keytxt=jmkey[lx]+yhxsf+pdsf
然后直接将纯净的无混淆组合与变量yhxsf、pdsf的值组合为新的字符串keytxt
然后通过for循环,按照len设置的字符长度,将charAt()方法返回的keytx字符串中随机位置的单个字符组合为为无序的字母与数字、特殊符号组合pssword,pssword则为我们需要生成的一个高强度随机字符密码.
但以上只是生成了一个随机字符,那么如果需要批量生成接下来又该怎样实现呢?
我们可以再次设置一个num变量,通过num来控制生成随机密码字符的个数.
var allkey="";
var num="10";
然后调用for循环为将每次生成的随机字符追加到allkey变量中去,用htnl标签br逐个换行.
for (ii = 0; ii < num; ii++) {
allkey = allkey+mmrand(10,0,0,1)+'<br>';
}
再用document.write来在网页中输出显示生成的多组字符.
document.write(allkey);
最后,综上所述,js要实现批量生成随机复杂字符串的完整的代码为:
<script type="text/javascript">
function mmrand(len,lx,fz,ts) {
len = len || 10;
var yhx=['019','OLVUI','olgqvu','019OLVUI','019olgqvu','019OLVUIolgqvu'];
var jmkey=[];
jmkey.push('2345678');
jmkey.push('ABCDEFGHJKMNPQRSTWXYZ');
jmkey.push('abcdefhijkmnprstwxyz');
jmkey.push('2345678ABCDEFGHJKMNPQRSTWXYZ');
jmkey.push('2345678abcdefhijkmnprstwxyz');
jmkey.push('2345678abcdefhijkmnprstwxyzABCDEFGHJKMNPQRSTWXYZ');
var pdsf="",yhxsf="";
if(ts==1){
pdsf='@#%&*+-~';
}
if(fz==0){
yhxsf=yhx[lx];
}
var keytxt=jmkey[lx]+yhxsf+pdsf;
var keylen = keytxt.length;
var pssword="";
for (i = 0; i < len; i++) {
pssword += keytxt.charAt(Math.floor(Math.random() * keylen));
}
return pssword;
}
var allkey="";
var num="10";
for (ii = 0; ii < num; ii++) {
allkey = allkey+mmrand(10,0,0,1)+'<br>';
}
document.write(allkey);
</script>
我们只需要用记事本,新建一个空白的文本文件,然后将以上代码复制粘贴到文本内,在保存文件时,选择:文件-另存为,在弹出的另存为面板中,保存类型:设置为所有文件.
将文件名由:新建文本文件.txt改为:批量随机字符生成.html,左侧保存的文件位置设置为桌面,选择保存即可.
然后打开保存的文件或直接将其拖入到浏览器中刷新即可运行生成多个不同强度的字符.
当然,我们只要加上几个单选按钮与一个文本框,设置下按钮事件,即可将其扩展为一个功能强大的可以批量生成多组字符串的随机字符生成器.