javascript 生成随机密码,指定位数,难度(大小写、数字、特殊字符)
原理也没啥好藏着掖着的,就是为了保证密码难度,开头的字符一定是满足安全需要的,比如要求大小写数字加特殊字符,那么开头四位就一定是:大写一位、小写一位、数字一位、特殊字符一位;然后剩下的随机。
/**
* @description: 随机密码
* @param {*} len 密码位数
* @param {*} mode 密码难度:hide(大小写数字特殊字符)、medium(大小写数字)、low(小写数字)
* @Date: 2021-07-02 15:52:32
* @Author: mulingyuer
*/
export const randomPass = function (len = 16, mode = "high") {
const lowerCaseArr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',];
const blockLetterArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
const numberArr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const specialArr = ['!', '@', '-', '_', '=', '<', '>', '#', '*', '%', '+', '&', '^', '$'];
const passArr = [];
let password = '';
//指定参数随机获取一个字符
const specifyRandom = function (...arr) {
let str = "";
arr.forEach(item => {
str += item[Math.floor(Math.random() * item.length)]
});
return str;
}
switch (mode) {
case "high":
//安全最高的
password += specifyRandom(lowerCaseArr, blockLetterArr, numberArr, specialArr);
passArr.push(...lowerCaseArr, ...blockLetterArr, ...numberArr, ...specialArr);
break;
case "medium":
//中等的
password += specifyRandom(lowerCaseArr, blockLetterArr, numberArr);
passArr.push(...lowerCaseArr, ...blockLetterArr, ...numberArr);
break;
//低等的
case "low":
password += specifyRandom(lowerCaseArr, numberArr);
passArr.push(...lowerCaseArr, ...numberArr);
break;
default:
password += specifyRandom(lowerCaseArr, numberArr);
passArr.push(...lowerCaseArr, ...numberArr);
}
const forLen = len - password.length;
for (let i = 0; i < forLen; i++) {
password += specifyRandom(passArr);
}
return password;
}
分类:
JavaScript
标签:
密码javascript随机密码密码强度
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据