批量生成密码
将以下内容保存为html文件,双击执行。
<table>
<tr>
<td><textarea id="namelist" cols="80" rows="30"></textarea></td>
<td>
<input type="button" style="width:150px;" id="btnToPwd" onclick="GetPwd();" value="批量生成密码" />
</td>
<td><textarea id="namepwdlist" cols="80" rows="30"></textarea></td>
</tr>
</table>
<script type="text/javascript">
function $(s) {
return document.getElementById(s);
}
function GetPwd() {
var str = $("namelist").value;
var ary = str.split('\n');
var name_pwd_list = "";
for (var i = 0; i < ary.length; i++) {
name_pwd_list+=ary[i] + "{" + generateStrongPassword()+generateRandomPassword(10, true, true, true, true) + "}";
name_pwd_list += "\n";
}
$("namepwdlist").value = name_pwd_list;
}
//生成密码
//length:生成的密码长度
//includeUpperCase:是否包含大写字母
//includeLowerCase:是否包含小写字母
//includeNumbers:是否包含数字
//includeSymbols:是否包含特殊字符
function generateRandomPassword(length, includeUpperCase, includeLowerCase, includeNumbers, includeSymbols) {
// 定义字符集合
let charset = "";
if (includeUpperCase) charset += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (includeLowerCase) charset += 'abcdefghijklmnopqrstuvwxyz';
if (includeNumbers) charset += '0123456789';
//if (includeSymbols) charset += '!@#$%^&*()_+-=[]{}|;:,.<>?';
if (includeSymbols) charset += '!@#$%^&*()_+-=.<>';
if (charset.length === 0) {
console.error('请至少选择一种字符类型。');
return null;
}
let password = '';
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * charset.length);
password += charset[randomIndex];
}
return password;
}
function generateStrongPassword() {
const uppercaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';
const numbers = '0123456789';
//const specialCharacters = '~!@#$%^&*()_+-={}[]:";\'<>?,./|';
const specialCharacters = '!@#$%^&*()_+-=.<>';
const randomIndex = (arr, exclude) => {
let index;
do {
index = Math.floor(Math.random() * arr.length);
} while (exclude.includes(index));
return index;
};
let password = '';
let usedChars = [];
// Generate one character of each class
const classes = [
[uppercaseLetters],
[lowercaseLetters],
[numbers],
[specialCharacters]
];
classes.forEach((charClass) => {
const arr = charClass[0];
const index = randomIndex(arr, usedChars);
password += arr[index];
usedChars.push(index);
});
// Shuffle the password to ensure randomness
for (let i = password.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[password[i], password[j]] = [password[j], password[i]];
}
return password.substring(0, 4); // Limit to 12 characters
}
// Usage:
console.log(generateStrongPassword()+generateRandomPassword(10, true, true, true, true));
</script>
浙公网安备 33010602011771号