記録

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

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

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

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

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

JavaScriptでパスコードを生成するコード。
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. 記録

    みんなが大好きなマリオが何やら酷評されている。

    みんなが大好きなマリオが何やら酷評されている。12月15日にリリース…

  2. 記録

    サイトのテコ入れ。

    サイトのテコ入れを行うことにこのサイトはアクセス数はまぁまぁあるの…

  3. 記録

    Yahoo!ニュースをPythonで取得するできました(´・ω・`)v

    早朝、YOUTUBEライブ配信で行ったものはタイトルとリンクが若干異…

  4. 記録

    らくてんのアフィリエイトを記事の下に取り付けるプラグインを作りました。

    らくてんの アフィリエイト を記事の下に取り付けるプラグインを作りま…

  5. 記録

    結局、YOUTUBE Premium継続することにしました。過去記事を撤回。

    YOUTUBE Premium継続することにします。アマゾンミュージ…

  6. 記録

    WinSCPというソフトが有るのだけど。

    WinSCPというソフトが有るのだけど自分はこのソフト、FTPのソフ…

2021年8月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

カテゴリー

PAGE TOP