উভয় /dev/random
এবং /dev/urandom
একটি "এনট্রপি পুল" ব্যবহার করুন। পুলটি ফুরিয়ে গেলে, /dev/random
এটি পুনরায় পূরণের জন্য অপেক্ষা করে, যার জন্য মনিটরিং সিস্টেমের আচরণের প্রয়োজন হয় (কীবোর্ড ইনপুট, মাউস মুভমেন্ট ইত্যাদি), তবে /dev/urandom
আপনাকে সিউডো-এলোমেলো ডেটা দেওয়া চালিয়ে যাবে। /dev/random
তাত্ত্বিকভাবে উচ্চতর মানের, তবে /dev/urandom
আপনার উদ্দেশ্যগুলির জন্য এটি অবশ্যই যথেষ্ট ভাল। (তবে /dev/urandom
এটি সম্ভবত অন্য কয়েকটি পদ্ধতির তুলনায় ধীর হতে পারে A একটি দ্রুত, তবে নিম্ন মানের, জেনারেটর সম্ভবত হার্ড ড্রাইভগুলি মুছে ফেলার জন্য যথেষ্ট ভাল It's এটি স্পষ্ট নয় যে আক্রমণকারীটি যে ক্রমটি উত্পন্ন হতে চলেছে তা জেনে কোনও সুবিধা অর্জন করবে, বা 0, 1, 2, 3, 4, .... এর মতো ক্রমিকের চেয়ে এলোমেলো সংখ্যাগুলি এই উদ্দেশ্যে আরও ভাল )
random(4)
ম্যান পৃষ্ঠাটি উদ্ধৃত :
আপনার সম্পর্কে কিনা ব্যবহার করা উচিত নিশ্চিত না হলে /dev/random
বা
/dev/urandom
, তারপর সম্ভবত আপনি আধুনিক ব্যবহার করতে চান। একটি সাধারণ নিয়ম হিসাবে, /dev/urandom
দীর্ঘকালীন জিপিজি / এসএসএল / এসএসএইচ কীগুলি বাদে অন্য কিছুর জন্য ব্যবহার করা উচিত।
আপডেট : আমি লেখার পরে `র্যান্ডম (4) ম্যান পৃষ্ঠা আপডেট করা হয়েছে। এটি এখন বলে:
/dev/random
ইন্টারফেস একটি লিগ্যাসি ইন্টারফেস বিবেচনা করা হয়, এবং
/dev/urandom
পছন্দ করা হয় এবং সমস্ত ব্যবহারের ক্ষেত্রে যথেষ্ট, অ্যাপ্লিকেশন যা তাড়াতাড়ি বুট করার সময় যদৃচ্ছতা প্রয়োজন ছাড়া; এই অ্যাপ্লিকেশনগুলির জন্য, getrandom(2)
পরিবর্তে অবশ্যই ব্যবহার করা উচিত, কারণ এটি এনট্রপি পুলটি শুরু না হওয়া অবধি বন্ধ হয়ে যাবে।
টমাস হান রচিত " দেবতা সম্পর্কে / দেব / ইউরানডম " এছাড়াও দেখুন
তবে /dev/urandom
, এটি অবরুদ্ধ হবে না যদিও আপনি প্রচুর পরিমাণে ডেটা তৈরি করতে চান তবে খুব ধীর হতে পারে। আপনার সিস্টেমে চেষ্টা করার আগে কিছু পরিমাপ করুন।
সম্পাদনা: নীচে "সত্য" র্যান্ডম সংখ্যা বনাম সিউডো-এলোমেলো সংখ্যার উপর একটি চিত্র রয়েছে। আপনার আগ্রহী সমস্তই যদি প্রশ্নের উত্তর হয় তবে আপনি এখন পড়া বন্ধ করতে পারেন।
আমি দাবিগুলি (অন্য উত্তরগুলি সহ এখানে) মনে করেছি যা /dev/random
সিউডো-র্যান্ডম নম্বর জেনারেটরের (পিআরএনজি) এর বিপরীতে একটি "সত্য" র্যান্ডম নম্বর জেনারেটর প্রয়োগ করে। উদাহরণস্বরূপ, উইকিপিডিয়া নিবন্ধটি এমন দাবি করে। আমি বিশ্বাস করি না যে এটি সঠিক। এটি সম্পর্কে এখানে কিছু আলোচনা রয়েছে যা হার্ডওয়্যার র্যান্ডম সংখ্যার জেনারেটরকে বোঝায়, তবে আমি এমন কোনও প্রমাণ দেখতে পাই না যে /dev/random
সাধারণত এই জাতীয় ডিভাইস ব্যবহার করে, বা সাধারণ কম্পিউটার এমনকি এমন একটি ডিভাইস ব্যবহার করে। তারা সিআর ফাংশনের মতো পিআরএনজি থেকে পৃথক rand()
যে তারা নির্বিচারবাদী নয়, যেহেতু তারা এমন উত্স থেকে এনট্রপি সংগ্রহ করে যেগুলি ব্যবহারিকভাবে অপ্রত্যাশিত।
আমি বলব এখানে তিনটি শ্রেণীর "এলোমেলো" নম্বর জেনারেটর রয়েছে:
সি এর rand()
ফাংশনের মতো নির্ধারিত পিআরএনজিগুলি পুনরাবৃত্তযোগ্য ক্রমগুলি তৈরি করতে একটি অ্যালগরিদম ব্যবহার করে যা সত্যিকারের এলোমেলো ক্রমের স্ট্যাটিস্টিকাল বৈশিষ্ট্যগুলি (কম বা কম) তৈরি করে। গেমসের জন্য এগুলি যথেষ্ট ভাল হতে পারে (সেগুলি বীজ দেওয়ার একটি ভাল উপায় দেওয়া হয়েছে), এবং অ্যাপ্লিকেশনগুলির জন্য প্রয়োজনীয় যা পুনরাবৃত্তিযোগ্যতা প্রয়োজন, তবে তারা ক্রিপ্টোগ্রাফির জন্য উপযুক্ত নয়।
I / O ক্রিয়াকলাপের মতো কিছু ব্যবহারিকভাবে অপ্রত্যাশিত উত্স থেকে জেনারেটর পছন্দ করে /dev/random
এবং /dev/urandom
সেই ফসল কাটতে পারে (এ কারণেই কিবোর্ডে পাউন্ডিং করা বা মাউস সরিয়ে নেওয়া /dev/random
আরও ডেটা তৈরি করতে পারে )। এগুলি পিআরএনজির সংজ্ঞা পূরণ করে কিনা তা আমার কাছে স্পষ্ট নয় (আমি এমন সংজ্ঞা দেখেছি যেগুলি বলে যে একটি পিআরএনজি হ'ল ডিস্ট্রিমেন্টিক), তবে তারা সত্যিকারের এলোমেলো সংখ্যা জেনারেটরও নয়।
হার্ডওয়্যার এলোমেলো সংখ্যা জেনারেটর যা তাদের প্রাথমিক অবস্থা সম্পর্কে সম্পূর্ণ জ্ঞান থাকা সত্ত্বেও শারীরিকভাবে অনির্দেশ্য এবং সঠিক পরিসংখ্যানগত বৈশিষ্ট্যগুলি নিশ্চিত করতে গাণিতিক কৌশলগুলিও ব্যবহার করে।