批量生成密码

将以下内容保存为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>

posted on 2025-11-26 08:43  陪你到沧海桑田  阅读(0)  评论(0)    收藏  举报

导航