記録

パスコードをランダムで生成するコードです。JavaScriptで書いてみました。

今日は朝から蒸し暑さを感じます。あの一週間も続いた雨はどこに行ってしまったのでしょうか?東京では立て続けに悲惨な事件が起きています、報道することにより模倣犯を増やしているような気がします。

さて、今日はパスコード(パスワード)をランダムで生成するコードをJavaScriptで書いてみました。パスコードの強度はそれ程、高くないかもしれませんが一応、パスコードを生成する事が出来ます。ソースコードを書いていてうっかりミスをしてしまいまして、無限ループを発生させてバグ取りに5分ぐらい費やしました。ループした原因は違う変数を判断文で使っていたという初歩的なミスです。この頃はそういうミスは稀ですが・・・その結果、無限ループに陥っていました。

パスコードというものを作ってみて案外簡単に作れるものだと実感。これを作る前にパスコードメーカーを作成するという動画を見ました。githubにソースコードも記載していましたので考え方は参考にしましたがコードは違うと思います。たにぐちさんの動画はvue.jsを使用してパスコードを作っているのに対して、自分はネイティブjsでパスコードを生成しているという違いがあります。

https://www.zip358.com/tool/PassCode/

document.getElementById("btn1").addEventListener("click", () => {
    const mode = {
        mode0: !document.getElementById("mode0").value ? 8 : document.getElementById("mode0").value,
        mode1: document.getElementById("mode1").checked ? true : false,
        mode2: document.getElementById("mode2").checked ? true : false,
        mode3: document.getElementById("mode3").checked ? true : false,
        mode4: document.getElementById("mode4").checked ? true : false
    };
    const data = {
        txt_cnt: mode.mode0,
        txt1: mode.mode1 ? "0123456789" : "",
        txt2: mode.mode2 ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "",
        txt3: mode.mode3 ? "abcdefghijklmnopqrstuvwxyz" : "",
        txt4: mode.mode4 ? "#$&*@+-" : "",
    };


    // console.log(mode,data);

    let str = "";

    if (mode.mode1 || mode.mode2 || mode.mode3 || mode.mode4) {
        let txt_str = data.txt1 + data.txt2 + data.txt3 + data.txt4;
        do {
            str = "";
            for (let i = 1; i <= data.txt_cnt; i++) {
                str = str + txt_str.substr((getRandomInt(txt_str.length) - 1), 1);
            }
        } while ((() => {
            let flg = [];
            flg[0] = mode.mode1 ? /[0-9]/.test(str) : true;
            flg[1] = mode.mode2 ? /[A-Z]/.test(str) : true;
            flg[2] = mode.mode3 ? /[a-z]/.test(str) : true;
            flg[3] = mode.mode4 ? /[#|$|&|*|@|+|\-]/.test(str) : true;
            
            return (() => {
                let f = true;
                for (const key in flg) {
                    if (!flg[key]) {
                        f = false;
                    }
                }
                return f;
            })();
            return false;
        })() === false);
        document.getElementById("view").value = str;
    } else {
        alert("どれかを選択してください");
    }

});
function getRandomInt(max) {
    return Math.floor(Math.random() * max);
}

活動支援よろしくお願いします

クリックでON、OFFする表示だけど。無数の書き方があると思ふ😃前のページ

数珠繋ぎにTweet(リプライ)するPHP言語のコードは意外にも簡単。次のページ

関連記事

  1. 記録

    ノマンドワーカーとクラウドソーシングとかを職にするのは待て!!

    ノマンドワーカーとクラウドソーシングとかを職にするのは待てと言ってお…

  2. 記録

    悔しさは劣等感を生むだけ。

    悔しさは劣等感を生むだけ。努力をすることを学ぶ事はない。この言葉…

  3. 記録

    faceboxで2010年ぐらいシェアされた言葉。

    Faceboxで2010年ぐらいシェアされた言葉がいま…

  4. 記録

    映画、エヴェレスト神々の山嶺(エベレストかみがみのいただき) #映画レビュー

    エヴェレスト神々の山嶺(エベレストかみがみのいただき)を観に行きまし…

  5. 記録

    ヘンな”きまり”を立ち読み、パラっと(´Д`)

    ヘンなきまりを立ち読みして、一つだけあぁ面白いなと思ったことは、…

  6. 記録

    友だちが少ないがそれは問題ではない。むしろ多い人のほうが?

    自分は友だちが少ない、これ昔からそんな感じです。小学校なんて友達っ…

PAGE TOP