Javascript 密码生成器删除了 2 个字符
Javascript Password Generator removing 2 characters
这是我第一次在 Whosebug 上发帖,所以如果我做错了什么,请指正 :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 个字符。前2个字符实际上是空字符串。
改变这个:
var t = new Array(blank, blank1);
为此:
var t = new Array;
这是我第一次在 Whosebug 上发帖,所以如果我做错了什么,请指正 :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 个字符。前2个字符实际上是空字符串。
改变这个:
var t = new Array(blank, blank1);
为此:
var t = new Array;