سؤال

وحاليا، تنفذ دفعة فقط الطبقة random_device لينكس (ربما * لا شىء) الأنظمة. لا أحد يعرف من التطبيقات الموجودة لOS-وفاق الآخرين؟ من الناحية المثالية، فإن هذه التطبيقات أن يكون مفتوح المصدر.

إذا لا وجود لها، وكيف ينبغي أن تذهب نحو تنفيذ RNG غير حتمية لويندوز وكذلك ماك OS X؟ لا توجد مكالمات API في أي بيئة من شأنها أن توفر هذه الوظيفة؟ بفضل (وآسف لجميع الأسئلة)!

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

المحلول

في ماكوسكس، يمكنك استخدام / ديف / عشوائي (نظرا لأنه * لا شىء).

في ويندوز، وربما كنت تريد وظيفة CryptGenRandom. أنا لا أعرف إذا كان هناك لتنفيذ دفعة :: random_device الذي يستخدمه.

نصائح أخرى

ويعتمد على ما تريد استخدام لكم RNG ل.

في العموم، سوف تجد ما تطعم البيانات البذور إلى منطقة عازلة، وتوليد قيم التجزئة المخزن المؤقت، مزيج مضادة في نتيجة وتجزئة ذلك بعض أكثر. والسبب في استخدام وظيفة تجزئة هو أن التجزئة جيدة تهدف إلى تحقيق نتائج أبحث عشوائية، من إدخال البيانات أن أكثر تنظيما.

إذا كنت ترغب في استخدامه لتشفير، things'll تحويل hairier الكثير. سوف تحتاج إلى القفز من خلال الأطواق المزيد لضمان أن RNG بك وتبقي أنماط تكرار ضمن حدود آمنة إلى حد معقول. يمكنني أن أوصي "تشفير العملي" بروس شنير (على مقدمة عن RNGs، وتطبيق نموذج). لقد حصل أيضا بعض الاشياء المتعلقة RNG نحو له يارو RNG.

إذا دفعة يعتمد على / هي ديف / عشوائية، فرص يعمل على ماك أيضا (كما فعلت ذلك).

في ويندوز هناك CryptoAPI كجزء من نظام التشغيل، والتي توفر جودة RNG التشفير.

وكما أعتقد وحدات المعالجة المركزية إنتل الحديثة لديها RNG الأجهزة على رقاقة - ولكن كنت قد لمعرفة كيفية الحصول على أنه في كل OS. باستخدام واجهات برمجة التطبيقات مستوى أعلى من المحتمل ان يكون أفضل رهان.

وتحرير: وإليك صلة لكيفية عمل إنتل RNG

وبينسل لديه واحد لائق.

#include <openssl/rand.h>
...
time_t now = time(NULL);
RAND_seed(&now, sizeof(now)); // before first number you need

int success = RAND_bytes(...);
if (!success) die_loudly();

RAND_cleanup(); // after you don't need any more numbers

مايكروسوفت CryptoAPI واحدة على Win32. فهو يتطلب بضعة المكالمات وظيفة. لا بما في ذلك التفاصيل هنا لأن هناك 2-5 سائط لكل من هذه المكالمات. كن حذرا، CryptoAPI يبدو أن تتطلب من المستخدم أن يكون التشكيل الجانبي المحلي الكامل. (C: \ الوثائق وإعدادات المستخدم \ \ إعدادات المحلية) تعيين بشكل صحيح حتى قبل أن أعطيك رقم عشوائي

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