Last active
March 12, 2018 16:16
-
-
Save ishowshao/0249cc830416b56429f39ecfaf9dcd18 to your computer and use it in GitHub Desktop.
pwdgen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>随机密码生成器</title> | |
<meta name="viewport" content="width=device-width"> | |
</head> | |
<body> | |
<h1>随机密码生成器</h1> | |
<p>随机生成的密码必须包含以下种类字符:</p> | |
<p> | |
<input type="checkbox" id="0" checked> | |
<label for="0">小写字母</label> | |
<input type="checkbox" id="1" checked> | |
<label for="1">大写字母</label> | |
<input type="checkbox" id="2" checked> | |
<label for="2">数字</label> | |
<input type="checkbox" id="3" checked> | |
<label for="3">特殊字符</label> | |
</p> | |
<p> | |
密码长度: | |
<input id="length" type="number" value="8"> | |
</p> | |
<p> | |
<button id="gen">生成</button> | |
</p> | |
<p> | |
<input id="pwd" type="text" value=""> | |
</p> | |
<p>源代码可以右键查看,我不会保存你的密码,放心使用</p> | |
<script> | |
var lowerCase = 'abcdefghijklmnopqrstuvwxyz'; | |
var upperCase = lowerCase.toUpperCase(); | |
var number = '1234567890'; | |
var sign = '!@#$%^&*()-_'; | |
var source = [lowerCase.split(''), upperCase.split(''), number.split(''), sign.split('')]; | |
var random = function (length) { | |
return Math.floor(Math.random() * length); | |
}; | |
document.getElementById('gen').addEventListener('click', function () { | |
var pwd = ''; | |
var pwdLength = 8; | |
var length = +document.getElementById('length').value; | |
if (length > 0) { | |
pwdLength = length; | |
} | |
var checkboxs = document.querySelectorAll('[type=checkbox]'); | |
for (var i = 0; i < checkboxs.length; i++) { | |
if (checkboxs[i].checked) { | |
pwd += source[i][random(source[i].length)]; | |
} | |
} | |
if (pwd.length === 0) { | |
alert('请至少选择一种字符类型'); | |
return; | |
} | |
for (; pwd.length < pwdLength;) { | |
var s = random(source.length); | |
if (checkboxs[s].checked) { | |
var choose = source[s][random(source[s].length)]; | |
if (pwdLength > 40 || pwd.indexOf(choose) === -1) { | |
pwd += choose; | |
} | |
} | |
} | |
var chars = pwd.split(''); | |
chars.sort(function () { | |
return Math.random() - 0.5; | |
}).sort(function () { | |
return Math.random() - 0.5; | |
}); | |
document.getElementById('pwd').value = chars.join(''); | |
document.getElementById('pwd').select(); | |
try { | |
var successful = document.execCommand('copy'); | |
var msg = successful ? 'successful' : 'unsuccessful'; | |
console.log('Copying text command was ' + msg); | |
} catch (err) { | |
console.log('Oops, unable to copy'); | |
} | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment