仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

[JavaScript] パスワードジェネレータ

汎用性とか拡張性を無視して、シンプルなパスワードの生成器
なんとなく、読みにくい文字だけは排除してみる

var PasswordGenerator = (function() {
    var beans  = 'abcdefghijklmnopqrstuvwxyz'
               + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
               + '0123456789';
    var except = 'iU2pQl1Z9';
    for (var i = 0, l = except.length; i < l; ++i) {
        var c = except.charAt(i);
        beans = beans.replace(c, '');
    };
    var chars = beans.length;
    if (chars > 0) {
        chars--;
    };
    function PasswordGenerator() {};
    PasswordGenerator.prototype.generate = function(length) {
        if (!length) {
            return NaN;
        };

        function rand(min, range) {
            return Math.floor(Math.random() * (range - min + 1) + min);
        };

        var password = []
        for (var i = 0; i < length; ++i) {
            var p = rand(0, chars);
            var c = beans.charAt(p);
            password.push(c);
        };

        return password;
    };
    return PasswordGenerator;
}) ();

(new PasswordGenerator).generate(16).join('');