私たちがコードで生成する「ランダムな」数字は、実際には擬似ランダムであることがわかります。 Javaの場合、デフォルトでタイムスタンプをランダムシードとして使用し、それ以降に生成されるすべての乱数はその時点から確定的に作成されます。オーディオ信号を使用したランダムキーの作成
乱数を使用してパスワードを生成し、悪意のある人物がそのパスワードを生成した日を知っている場合、その日のミリ秒ごとに反復するだけで済みます。それは1000 * 60 * 60 * 24 = 8,640万になります。これは洗練されたパーティーのための非常に多くの推測ではありません。エドワード・スノーデンは、「あなたの敵は1秒あたり1兆の推測が可能であると想定する」と有名に警告しました。
問題は、本当に乱数をどのように生成するかです。私が望むのは、自分のラップトップのマイクから16ビットのオーディオをサンプリングし、シードを形成するために2つのサンプルの最下位8ビットを使用することです。ここでのアイデアは、オーディオ信号の最も重要でない部分がノイズが運ばれる場所であるということです。波が記録されている意味
0,19
0,38
0,-49
1,93
1,-29
1,-80
あなたは最上位バイトが0または1であることを確認することができ、たとえば、ここでは比較的かなりの場所に記録されている16ビットのサンプルから数2バイトの値は、かろうじて登録していた。一方、最下位バイトの値はすべての場所でジャンプしています。それはランダムな種子の肥沃な土地です!
このポストの特定の質問は、私たちの周りの現実世界のノイズによって生成されるノイズ信号を使用して、ランダムな32文字のパスワードを生成する方法です。
自己回答の質問は、特定の_question_の形ではなく、オープンエンドのプロジェクトを取る必要があります。 – duskwuff
または、Math.random()+ Math.random()+ Math.random() 'を使用するか、または" secure " –