10

javascriptで安全なパスワードを生成する最も簡単な方法は何ですか?

少なくとも 1 つの特殊文字と 2 つの大文字と小文字が混在する文字列を含める必要があります。長さは 6 文字以上にする必要があります。

4

6 に答える 6

36

ここにいくつかの便利なString機能があります:

String.prototype.pick = function(min, max) {
    var n, chars = '';

    if (typeof max === 'undefined') {
        n = min;
    } else {
        n = min + Math.floor(Math.random() * (max - min + 1));
    }

    for (var i = 0; i < n; i++) {
        chars += this.charAt(Math.floor(Math.random() * this.length));
    }

    return chars;
};


// Credit to @Christoph: http://stackoverflow.com/a/962890/464744
String.prototype.shuffle = function() {
    var array = this.split('');
    var tmp, current, top = array.length;

    if (top) while (--top) {
        current = Math.floor(Math.random() * (top + 1));
        tmp = array[current];
        array[current] = array[top];
        array[top] = tmp;
    }

    return array.join('');
};

パスワードは次のようになります。

var specials = '!@#$%^&*()_+{}:"<>?\|[];\',./`~';
var lowercase = 'abcdefghijklmnopqrstuvwxyz';
var uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var numbers = '0123456789';

var all = specials + lowercase + uppercase + numbers;

var password = '';
password += specials.pick(1);
password += lowercase.pick(1);
password += uppercase.pick(1);
password += all.pick(3, 10);
password = password.shuffle();

デモ: http://jsfiddle.net/Blender/ERCsD/6/

于 2012-09-28T07:55:50.713 に答える
7

私はちょうど今ポストを得ます。数分かけてこの記事を読むことができるのであれば、Math.random() を使用するのは得策ではありません。

実際、新しいブラウザには暗号化 API があり、暗号化に触れる何かを始めるとすぐにそれを使用する必要があります。

そのため、有名な暗号 API を使用するMy ライブラリを使用することをお勧めします。サーバー側とクライアント側 (nodejs とブラウザー) の両方で動作します。

mk-

于 2015-07-12T09:12:21.160 に答える