2

私は、ウェブページ上で実行されるパスワードジェネレータを開発しています。.netの組み込み機能を使用していますRandom(); 乱数を生成するために機能します。次に、文字列からさまざまな大文字/小文字と数字を選択するために使用されます。

私が疑問に思っているのは、使用するのがどれほど安全かということですRandom()。パスワードを生成する機能。これらのパスワードは2分後に期限切れになり、ページはIPアドレスごとに3回しか生成できないことに注意してください。

4

3 に答える 3

6

Randomパスワードセキュリティが必要な場合は使用しないでください。

を使用しRNGCryptoServiceProviderます。

暗号化サービスプロバイダー(CSP)が提供する実装を使用して、暗号化乱数ジェネレーター(RNG)を実装します。このクラスは継承できません。

于 2013-01-10T14:29:24.847 に答える
5

安全な乱数が必要な場合は、System.Security.Cryptography.RandomNumberGeneratorから継承するクラスを作成できます。

于 2013-01-10T14:29:09.997 に答える
3

System.Random安全ではありません。最大の弱点は、予測可能なソースからシードされた31ビットのシードしかないことです(Environment.TickCount)。したがって、のインスタンスがいつ作成されたかを知っている攻撃者Randomは、可能なパスワードをほんの一握りに絞り込むことができます。

アルゴリズム自体も安全ではありません。それらのいくつかを観察することから、将来のアウトプットを予測することはおそらく可能です。

安全な乱数を生成するSystem.Security.Cryptography.RandomNumberGeneratorなど、から派生したクラスを使用します。RNGCryptoServiceProvider

安全なランダム文字列を生成するには、C#でランダムな8文字の英数字の文字列を生成するにはどうすればよいですか?。そこにある他のほとんどの答えは安全ではないことに注意してください。

于 2013-01-10T14:32:54.160 に答える