私の理解では、このRandom
クラスは「疑似ランダムアルゴリズム」に基づいてランダムな値を生成するため、実際にはランダムではありません。それらは数学アルゴリズムの具体的な実装に基づいているため、結果は予測可能です。
したがって、このアルゴリズムを破ろうとした場合、セキュリティ違反のために、特定の情報を知る必要があります。アルゴリズムが何であるか、.Net Frameworkを介して公開されていること、入力値(シード)?
繰り返しますが、これらの入力値を魔法のようにすることはできません。それらは何かに基づいている必要があります。
あなたの例では、私が理解しているように、すべての可能なシード値を生成しようとしています。あなたが言ったように、これには長い時間がかかります!
しかし、なぜ私はこれをするのでしょうか?最もインテリジェントなアプローチは、入力値を生成するために何を使用しているかを推測することです。つまり、時間を使っていますか?パスワードはいつリセットされますか?このパスワードはいつ生成されましたか?これはどのような値のサブセットを私に与えますか?どれくらいの数を使っていますか?
1日に600万のシードをテストできる場合、ロジックを適用すると、可能な値のセットがいくつの値に絞り込まれますか?600万未満の場合、24時間以内にパスワードを破ることができます。
とはいえ、シードのサブセットを十分に大きくし、予測不可能にすることができれば、これは困難です。それで、セキュリティの多くのことが起こるように、これはどれほど安全である必要があるのかという質問があります。100%はありません!