7

私は、許可されていないパスワードのファイルを含むパスワード制限のセットが必要なプロジェクトに取り組んでいます ( 「abc」、「abcdef」、「12345」、「password」などのすべての一般的なパスワード)パスワードは約 10000 ~ 15000 語で構成されます。

ユーザーがパスワードを設定/変更したときに、それがリストに存在しないことを確認したいと思います。Javaで辞書(またはマップ)を使用することを考えていました(バケットは「A」、「B」、「C」....「Z」、「NUMBERS」、「SPECIAL_CHARS」)ので、最初の文字を入力してから、対応するバケットを検索します。しかし、これでどのようなパフォーマンスが得られるかはわかりません。

「禁止パスワード」リストを操作するための提案はありますか? 注意すべきその他の指針はありますか?

4

3 に答える 3

2

「文字ごとに 1 つのバケット」というアプローチを完全な文字列に拡張すると、trieで終了しHashSetます。 、検証コストはほぼ一定であり、ハッシュセットはパスワードが保存されるはずのバケットを検索します)。頭文字に応じてハッシュを分割しても、単一のセットを使用する場合と比較してパフォーマンスは向上しません。

一方、実装がメモリに制限されている場合は、いくつかの禁止されたパスワードを保存することを避け、ルールに基づいた検証を行うことができます (たとえば、「ghij」のように、1 つだけ異なる 4 つの連続する文字があるかどうかを確認するか、それらが"yuiop" などのキーボード行のフラグメントです)。各ルールは、複数の禁止パスワードに相当します。

于 2013-03-08T06:13:16.423 に答える
1

これを行うには、実際のライブラリを使用することをお勧めします。たとえば.. https://code.google.com/p/java-dictionary-password-validator/

于 2013-08-02T19:33:12.397 に答える
0

文字のシーケンス (例: abcdef) と同じ文字 (例: 111111) およびその他すべての制約をチェックできるメソッドを作成する必要があります。これに加えて、すべての制限された文字列を保持する静的 List/Set 変数を取得する必要があります。

于 2013-03-08T06:14:55.760 に答える