ডকুমেন্টেশন অনুসারে , সিকিউরর্যান্ডম দ্বারা ব্যবহৃত বিভিন্ন অ্যালগরিদমগুলি পছন্দ অনুসারে:
- বেশিরভাগ * এনআইএক্স সিস্টেমে
- NativePRNG
- SHA1PRNG
- NativePRNGBlocking
- NativePRNGNonBlocking
- উইন্ডোজ সিস্টেমগুলিতে
- SHA1PRNG
- উইন্ডোজ-PRNG
আপনি যেহেতু লিনাক্স সম্পর্কে জিজ্ঞাসা করেছিলেন, তাই আমি উইন্ডোজ বাস্তবায়ন উপেক্ষা করছি, এবং সানপিকেসিএস 11 যা কেবলমাত্র সোলারিসে পাওয়া যায়, যদি না আপনি নিজে এটি ইনস্টল করেন - এবং তারপরে আপনি এটি জিজ্ঞাসা করবেন না।
সেই একই ডকুমেন্টেশন অনুসারে, এই অ্যালগোরিদমগুলি কী ব্যবহার করে
SHA1PRNG
প্রাথমিক সিডিং বর্তমানে সিস্টেম বৈশিষ্ট্য এবং জাভা.সিকিউরিটি এনট্রপি সংগ্রহের ডিভাইসের সংমিশ্রনের মাধ্যমে করা হয়।
NativePRNG
nextBytes()
ব্যবহার /dev/urandom
generateSeed()
ব্যবহারসমূহ/dev/random
নেটিপিআরএনজিবি ব্লকিং
nextBytes()
এবং generateSeed()
ব্যবহার/dev/random
নেটিভপিআরএনজিওন ব্লকিং
nextBytes()
এবং generateSeed()
ব্যবহার/dev/urandom
এর অর্থ আপনি যদি SecureRandom random = new SecureRandom()
এটি ব্যবহার করেন তবে এটি সেই তালিকার নীচে চলে যাবে যতক্ষণ না এটি কার্যকরভাবে কাজ করে, যা সাধারণত নেটিভআরপিএনজি হবে finds এবং এর অর্থ হ'ল এটি নিজে থেকেই বীজ দেয় /dev/random
(বা এটি ব্যবহার করে যদি আপনি স্পষ্টভাবে একটি বীজ উত্পন্ন করেন), তারপরে /dev/urandom
পরবর্তী বাইটস, ইনটস, ডাবল, বুলিয়ানস, কী আছে-ইউএস পাওয়ার জন্য ব্যবহার করে ।
যেহেতু /dev/random
ব্লক করা হচ্ছে (এটি এনট্রপি পুলে পর্যাপ্ত এনট্রপি না হওয়া পর্যন্ত এটি ব্লক করে), যা কার্য সম্পাদনে বাধা দিতে পারে।
এর একটি সমাধান হ'ল হ্যাজেড জাতীয় কিছু ব্যবহার করা যা যথেষ্ট পরিমাণে এনট্রপি জেনারেট করে, অন্য সমাধানটি /dev/urandom
পরিবর্তে ব্যবহার করে। আপনি পুরো jvm এর জন্য এটি নির্ধারণ করতে পারলে, আরও ভাল সমাধান SecureRandom
ব্যবহার করে নির্দিষ্ট নির্দিষ্ট উদাহরণটির জন্য এটি করছেন SecureRandom random = SecureRandom.getInstance("NativePRNGNonBlocking")
। মনে রাখবেন যে পদ্ধতিটি যদি নেটিভপিআরএনজিওন ব্লকিংয়ের জন্য একটি নুশুচ অ্যালগোরিদম এক্সসেপশন নিক্ষেপ করতে পারে তবে ডিফল্টে ফ্যালব্যাকের জন্য প্রস্তুত থাকুন।
SecureRandom random;
try {
random = SecureRandom.getInstance("NativePRNGNonBlocking");
} catch (NoSuchAlgorithmException nsae) {
random = new SecureRandom();
}
এছাড়াও নোট করুন যে অন্যান্য * নিক্স সিস্টেমে /dev/urandom
অন্যরকম আচরণ করতে পারে ।
Is /dev/urandom
র্যান্ডম যথেষ্ট?
প্রচলিত জ্ঞানের রয়েছে যা কেবল /dev/random
এলোমেলো যথেষ্ট। তবে কিছু কণ্ঠ আলাদা হয়। ইন "ব্যবহার করুন SecureRandom করার সঠিক উপায়" এবং "আপনার / dev / urandom সম্পর্কে মিথস" , এটা বলা হয় যে /dev/urandom/
ঠিক ভাল হিসাবে।
তথ্য সুরক্ষা স্ট্যাকের উপরের ব্যবহারকারীরা এটির সাথে একমত হন । মূলত, যদি আপনাকে জিজ্ঞাসা করতে /dev/urandom
হয় তবে আপনার উদ্দেশ্যটি ভাল fine