4

車のリモート エントリー システムに関する記事をhttp://auto.howstuffworks.com/remote-entry2.htmで見つけました。

送信機と受信機の両方が同じ疑似乱数発生器を使用します。送信機が 40 ビット コードを送信すると、疑似乱数ジェネレーターを使用して新しいコードが選択され、メモリに保存されます。一方、受信側が有効なコードを受信すると、同じ疑似乱数ジェネレーターを使用して新しいコードを選択します。このようにして、送信機と受信機は同期されます。受信機は、期待するコードを受信した場合にのみドアを開きます。

2 つの PRNG 関数で同じ乱数を同時に生成することは可能ですか?

4

3 に答える 3

11

PRNG 関数では、関数の出力は「シード」値に依存しているため、同じシード値が指定された連続する呼び出しから同じ出力が提供されます。あ、はい。

例 (C# を使用) は次のようになります。

// Provide the same seed value for both generators:
System.Random r1 = new System.Random(1);
System.Random r2 = new System.Random(1);

// Will output 'True'
Console.WriteLine(r1.Next() == r2.Next());

もちろん、これはすべて、ある種の決定論的な式を使用して値を生成する乱数ジェネレーターに依存しています。生成にエントロピーまたはノイズのプロパティを使用する、いわゆる「真の乱数」数ジェネレーターを使用する場合、エントロピー状態を複製できない限り、何らかの入力が与えられた場合に同じ値を生成することは非常に困難です。関数への両方の呼び出し-もちろん、そのようなジェネレーターを使用する目的を無効にします...

リモート キーレス エントリー システムの場合、この機能を利用するために決定論的な PRNG 機能を使用する可能性が非常に高くなります。電子回路用の乱数を生成するために、この種の機能を提供する IC は数多くあります。

編集: リクエストに応じて、指定されたシード値に依存しない非決定論的乱数ジェネレーターの例を次に示します: Quantum Random Number Generator。もちろん、freespace がコメントで指摘しているように、これは真の乱数を生成するため、疑似乱数ジェネレーターではありません。

于 2008-10-27T04:16:15.813 に答える
3

ほとんどの PRNG には、次の値を生成するために使用するシードの形式の内部状態があります。内部ロジックは次のようになります。

nextNumber = function(seed);
seed = nextNumber;

したがって、新しい数値を生成するたびに、シードが更新されます。同じアルゴリズムを使用する 2 つの PRNG に同じシードを与えるfunction(seed)と、同じ数値に評価されます (ほとんどが決定論的であると仮定すると)。

質問に直接適用: 送信機はコードを選択し、それをシードとして使用します。レシーバーは、それを受け取った後、これを使用してジェネレーターをシードします。これで 2 つが整列され、同じ値が生成されます。

于 2008-10-27T04:27:48.537 に答える
1

ErikとClaudiuが言ったように、PRNGに同じ値をシードする限り、同じ出力になります。

PRNGの基礎としてAES(またはその他の暗号化アルゴリズム)を使用する場合の例を見ることができます。両方のデバイス(送信機と受信機)で一致する入力を使用し続ける限り、出力も一致します。

于 2008-10-27T04:51:26.507 に答える