[英]Javascript Password Generator removing 2 characters
这是我第一次在StackOverflow上发布问题,所以如果我做错了,请纠正我:D
因此,我在JavaScript中有一个密码生成器,该密码生成器可以使用所需的长度,什么字符等,并为您生成一个随机密码。
唯一的问题是,它将从生成的密码的末尾删除2个字符。 例如,您生成一个16个字符的密码,但是它将输出一个14个字符的密码。
JavaScript代码:
var ascii_lower = "abcdefghijklmnopqrstuvwxyz";
var ascii_upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var digits = "0123456789";
var punctuation = "!#$%&()*+,-./:;<=>?@[\\]^_`{|}~";
var qu = '"';
var ap = "'";
var blank = "";
var blank1 = "";
function shuffle(e) {
var t = e.slice();
var n = t.length;
var r, i;
while (n-- > 0) {
r = Math.floor(Math.random() * (n + 1));
if (n != r) {
i = t[n];
t[n] = t[r];
t[r] = i
}
}
return t
}
function genpw() {
var e = parseInt(document.pw_form.pw_len.value, 10);
var t = new Array(blank, blank1);
var n = new Array;
var r = "";
var i;
if (document.pw_form.low.checked) {
t.push(ascii_lower)
}
if (document.pw_form.high.checked) {
t.push(ascii_upper)
}
if (document.pw_form.num.checked) {
t.push(digits)
}
if (document.pw_form.punc.checked) {
t.push(punctuation)
}
if (document.pw_form.qu.checked) {
t.push(qu)
}
if (document.pw_form.ap.checked) {
t.push(ap)
}
if (isNaN(e)) {
e = 12
}
document.pw_form.pw_len.value = e;
for (var s = 0; s < t.length; s++) {
i = Math.floor(Math.random() * t[s].length);
n.push(t[s].slice(i, i + 1));
r = r + t[s];
e--
}
while (e--) {
i = Math.floor(Math.random() * r.length);
n.push(r.slice(i, i + 1))
}
document.pw_form.pw_field.value = shuffle(n).join("");
return true
}
HTML代码:
<form class="form-horizontal" name="pw_form" method="POST">
<fieldset>
<div class="form-group">
<label for="pw_field" class="col-lg-2 control-label">Password:</label>
<div class="col-lg-10">
<input type="text" name="pw_field" id="pw_field" class="form-control" placeholder="Password (Output)" readonly="readonly">
</div>
<label for="pw_len" class="col-lg-2 control-label">Length:</label>
<div class="col-lg-10">
<input type="text" name="pw_len" id="pw_len" class="form-control" value="10" size="4">
<tr><td><input checked="checked" type="checkbox" name="low">Lower Case</input></td></tr><br>
<tr><td><input checked="checked" type="checkbox" name="high">Upper Case</input></td></tr><br>
<tr><td><input checked="checked" type="checkbox" name="num">Numbers</input></td></tr><br>
<tr><td><input type="checkbox" name="punc">Punctuation</input></td></tr><br>
<tr><td><input type="checkbox" name="qu">Quotation Marks</input></td></tr><br>
<tr><td><input type="checkbox" name="ap">Apostrophe</input></td></tr><br>
</div>
</div>
<div class="form-group">
<div class="col-lg-12">
<input type="button" class="btn btn-block btn-success" value="Generate" onClick="genpw()">
</div>
</div>
</fieldset>
</form>
非常感谢。
您不会丢失2个字符。 前两个字符实际上是空字符串。
更改此:
var t = new Array(blank, blank1);
对此:
var t = new Array;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.