すくすくすくらっぷ

とりあえずすくらっぷ

Electronでパスワード生成アプリを作ってみる 4 (パスワードの強度をチェックする)

前回の続きです。
blauthree.hatenablog.com

見た目はともかくとして、パスワード生成アプリっぽくなってきました。 今回は、生成したパスワードの強度をチェックしたいと思います。

「パスワード 強度 チェック javascript」で検索してみると、
「zxcvbn」というライブラリを発見。
どうやらDropbox社が公開したMITライセンスのライブラリみたいですね。
これを使ってみたいと思います。

https://github.com/dropbox/zxcvbn

導入としては、githubにあるManual Installationに従います。
index.htmlと同じ階層にzxcvbn.jsを置いて、head部に以下のコードを追加。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- ここに追加 -->
  <script type="text/javascript" src="zxcvbn.js"></script>
  <title>Electron-Password</title>
</head>

次にjs部分で判定の結果を表示させます。
zxcvbn(password)でパスワードの情報を格納したobjectを返すようです。
scoreで強度に応じた結果(0~4)を返すのでそれに対応した文字列を返します。

generatePassword()では、パスワードとその強度判定結果をalertに表示させています。

function generatePassword() {
    var length = document.getElementById("passLength").value; // テキストボックスの値を取得
    var pw = "";

    for (var i=0; i < length; i++) {
        pw += randomChar();
    }

    // アラートでパスワードと強度の判定結果を出力
    var message = pw + "\r\n";
    message += "強度: " + checkPassword(pw);
    alert(message);
    return pw;
}

/**
 * zxcvbnでパスワード強度を判定する
 * @param {} password 
 */
function checkPassword(password) {
    var result = ["弱い", "そこそこ弱い", "中", "そこそこ強い", "強い"];
    // zxcvbnで判定し、resultにある文言を返す
    var score = zxcvbn(password).score;
    return result[score];
}

以下は実行結果です。

3文字Ver f:id:blauthree:20180628231813p:plain

9文字Ver f:id:blauthree:20180628231842p:plain

13文字Ver f:id:blauthree:20180628231933p:plain

それぞれ結果が変わっていることがわかります。

ここまで実装したコードをgithubにアップしてみました。 github.com

今度はデザインとかもそれっぽいアプリを何か作ることを目標にしたいと思います。