PassGenJS。 信頼性を示すJavascriptでパスワードを生成します



あるプロジェクトでは、クライアントで強力なパスワードを生成する必要がありました。 既製のソリューションを探しましたが、適切なものは見つかりませんでした。
見つかったすべてのライブラリは、いくつかの理由で適合しませんでした-単に希望の長さでパスワードを生成したため、パスワードの強度を確認する方法がありませんでした。 独自の「自転車」を書くことが決定されました-代替ソリューションとして、経験は不要ではありません。 結果はPassGenJSライブラリです。

ボンネットの下にあるもの:

いくつか例を挙げます。


強力なパスワードを生成します:

PassGenJS.getPassword({score: 3}); //  - 8!G$}6&={a(_> 

非常に簡単なパスワードを生成します:

 PassGenJS.getPassword({score: 1}); //  - 82oN 

60%の信頼性でパスワードを生成します。

 PassGenJS.getPassword({reliabilityPercent: 60}); //  - YyopjU5atXBMG 

文字パラメーターを使用してパスワードを生成します。

 PassGenJS.getPassword({ symbols: 2, //  .  letters: 2, //   numbers: 1, //   lettersUpper: 5 //      }); //  - m6A:k=WYPP 


パスワードの強度を確認することもできます。

 PassGenJS.getScore("YyopjU5atXBMG"); // : { "password": "YyopjU5atXBMG", //  "score": 3, //   (4 - ) "entropy": 77, //   "reliability": 60.15625, //   ( ) "reliabilityPercent": 60 //    % } 


このプラグインで使用される推定アルゴリズムは、情報理論の一般原則に基づいています。
パスワードの強度の推定として、そのエントロピーの値が使用されます。 詳細については、 ウィキペディアをご覧ください

パスワードのエントロピー (情報容量)は、情報理論の方法によって推定された、パスワードを構成する一連の文字を選択する際のランダム性の尺度を意味します。 パスワードのエントロピーを決定するために使用される式は次のとおりです。



Nは使用可能な文字数、Lはパスワードの文字数です。 Hはビット単位で測定されます。

プラグインの一部として、次の条件を使用して、エントロピーによってパスワードの強度を決定します。

 if (entropy > 0 && entropy < 56) { score = 1; } else if (entropy >= 56 && entropy < 64) { score = 2; } else if (entropy >= 64 && entropy < 128) { score = 3; } else if (entropy >= 128) { score = 4; } 


私は健全な批判とフィードバックに喜んでいるでしょう。 誰かが便利なプラグインを見つけたら、さらに開発することができます:

デモ
Github

Source: https://habr.com/ru/post/J239165/


All Articles