繁体   English   中英

Javascript密码生成器删除2个字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM