سؤال

جئت عبر مقال حول السيارة عن بعد نظام دخول في http://auto.howstuffworks.com/remote-entry2.htm في النقطة الثالثة, يقول المؤلف,

كل من المرسل والمتلقي استخدام نفس الزائفة مولد رقم عشوائي.عند الارسال يرسل 40 بت رمز يستخدم الزائفة مولد رقم عشوائي لاختيار رمز جديد ، فإنه يخزن في الذاكرة.على الطرف الآخر عند المتلقي يتلقى رمز صالح ، فإنه يستخدم نفس الزائفة مولد رقم عشوائي لاختيار واحدة جديدة.في هذه الطريقة, جهاز الإرسال والاستقبال متزامنة.المتلقي فقط يفتح الباب إذا كان يتلقى التعليمات البرمجية انها تتوقع.

هل من الممكن أن يكون اثنين من اللوائح وظائف إنتاج نفس الأرقام العشوائية في نفس الوقت ؟

هل كانت مفيدة؟

المحلول

في وظائف 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 التي هي حتمية من أجل الاستفادة من هذه الميزة. هناك العديد من الشهادات المرحلية التي تقدم هذا النوع من الوظائف لإنتاج الأرقام العشوائية للدوائر الإلكترونية.

وتحرير: بناء على طلبها، وهنا مثال على غير القطعية مولد رقم عشوائي التي لا تعتمد على قيمة البذور محددة: <لأ href = "http://qrbg.irb.hr/" يختلط = " نوفولو noreferrer "> الكم عشوائية عدد المولدات . بطبيعة الحال، كما يشير freespace في التعليقات، وهذا ليس مولد عدد المزيف، لأنه يولد أرقام عشوائية حقا.

نصائح أخرى

معظم PRNGs داخلية الدولة في شكل البذور, التي تستخدم لتوليد المقبل القيم.المنطق الداخلي غني عن شيء مثل هذا:

nextNumber = function(seed);
seed = nextNumber;

لذلك في كل مرة يمكنك توليد عدد جديد البذور يتم تحديث.إذا كنت تعطي اثنين PRNGs التي تستخدم نفس خوارزمية نفس البذور ، function(seed) هو الذهاب إلى تقييم إلى نفس الرقم (نظرا لأنها القطعية ، والتي معظمها).

على السؤال مباشرة:الارسال يختار رمز يستخدم البذور.المتلقي ، بعد الحصول عليها ، يستخدم هذه البذور لها مولد.الآن وهما الانحياز ، وأنها سوف تولد نفس القيم.

وكما قال إريك وكلاوديو، الإعلان دمت البذور PRNG مع نفس القيمة التي سوف ينتهي مع نفس المخرج.

ويمكن رؤية مثال عند استخدام AES (أو أي خوارزمية التشفير الأخرى) كأساس لPRNG الخاص بك. طالما واصلتم باستخدام مدخلات تطابق على كل جهاز (الارسال والاستقبال) ثم مخرجات سوف تطابق أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top