The most important rules are 1. generate a strong password that's not in any public wordlist; 2. don't reuse it anywhere no matter what, because said wordlists grow with every major database breach.
I've been using this for more than a decade. The code is even older, and it shows... but still works. Add a good login database protected with a strong password or phrase you can remember (KeePass is my choice, but anything that's free software and offline is fine), and you're set.
HTML Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>JavaScript Password Generator</title>
<script>
function getRandomNum(lbound, ubound) { return (Math.floor(Math.random() * (ubound - lbound)) + lbound); }
function getRandomChar(number, lower, upper, other, extra) {
var numberChars = "0123456789";
var lowerChars = "abcdefghijklmnopqrstuvwxyz";
var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var otherChars = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
var charSet = extra;
if (number == true)
charSet += numberChars;
if (lower == true)
charSet += lowerChars;
if (upper == true)
charSet += upperChars;
if (other == true)
charSet += otherChars;
return charSet.charAt(getRandomNum(0, charSet.length));
}
function getPassword(length, extraChars, firstNumber, firstLower, firstUpper, firstOther, latterNumber, latterLower, latterUpper, latterOther) {
var rc = "";
if (length > 0)
rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
for (var idx = 1; idx < length; ++idx) {
rc = rc + getRandomChar(latterNumber, latterLower, latterUpper, latterOther, extraChars);
}
return rc;
}
</script>
</head>
<body>
<center>
<table width="80%" border="0">
<tr align="center">
<td>
<form name="myform">
<table border="0">
<tr>
<td>First character can be:</td>
<td>
<input type="checkbox" name="firstNumber" checked>Number
<input type="checkbox" name="firstLower" checked>Lowercase
<input type="checkbox" name="firstUpper" checked>Uppercase
<input type="checkbox" name="firstOther" checked>Other
</td>
</tr>
<tr>
<td>Latter characters can be:</td>
<td>
<input type="checkbox" name="latterNumber" checked>Number
<input type="checkbox" name="latterLower" checked>Lowercase
<input type="checkbox" name="latterUpper" checked>Uppercase
<input type="checkbox" name="latterOther" checked>Other
</td>
</tr>
<tr>
<td>Password length:</td>
<td><input type="text" name="passwordLength" value="16" size="3"></td>
</tr>
<tr>
<td>Extra password characters:</td>
<td><input type="text" name="extraChars" size="20"></td>
</tr>
</table>
</td>
</tr>
<tr align="center">
<td>New password: <input type="text" name="password" size="20"><br>
<input type="button" value="Generate password" onClick="document.myform.password.value = getPassword(document.myform.passwordLength.value, document.myform.extraChars.value, document.myform.firstNumber.checked, document.myform.firstLower.checked, document.myform.firstUpper.checked, document.myform.firstOther.checked, document.myform.latterNumber.checked, document.myform.latterLower.checked, document.myform.latterUpper.checked, document.myform.latterOther.checked);">
</form>
</td>
</tr>
</table>
</center>
</body>
</html>
Bookmarks