/* * @Author: Badguy * @Date: 2022-02-15 17:16:32 * @LastEditTime: 2022-02-18 17:57:54 * @LastEditors: your name * @Description: 账号管理方法 * have a nice day! */ export function generatePassword(rules, minNum, maxNum) { var rulesArr = rules.split('') var rulesArrLnArr = [] var pwd = '' var numbers = '0123456789' var lower = 'abcdefghijklmnopqrstuvwxyz' var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' var others = '~!@#$%^&*()_' function rand(min, max) { return Math.random() * (max - min) + min } var pwdLen = parseInt(rand(minNum, maxNum)) // 随机生成密码长度10-12位。 // alert("密码长度:" + pwdLen); var item = new Array(pwdLen) // 存放密码的类型 数字(1),小写(2),大写(3),特殊字符(4) for (let i = 0; i < rulesArr.length; i++) { if (rulesArr[i] === '1') { rulesArrLnArr.push(i + 1 + '') } } for (let i = 0; i < rulesArrLnArr.length; i++) { item[rulesArrLnArr[i]] = rulesArrLnArr[i] + '' // console.log(`rulesArrLnArr[i]`, rulesArrLnArr[i]) } for (let i = 0; i < pwdLen; i++) { if (rulesArrLnArr.indexOf(i + '') === -1) { item[i] = '' item[i] += rulesArrLnArr[parseInt(Math.random() * (rulesArrLnArr.length - 0) + 0)] // 其余部分随机生成1-4的数字。 } } // 打乱次序,重新排序,否则密码第四位永远是特殊符号。 item.sort(function () { return 0.5 - Math.random() }) // 返回0 两个数位置不变;小于0 就交换位置;大于0就不交换位置 for (let j = 0; j < pwdLen; j++) { if (item[j] === '4') { pwd += numbers.charAt(Math.random() * (numbers.length - 1) + 1) } else if (item[j] === '1') { pwd += lower.charAt(Math.random() * (lower.length - 1) + 1) } else if (item[j] === '2') { pwd += upper.charAt(Math.random() * (upper.length - 1) + 1) } else if (item[j] === '3') { pwd += others.charAt(Math.random() * (others.length - 1) + 1) } } return pwd }