আমি জাভাতে কীভাবে 20 টি এলোমেলো বাইট তৈরি করতে পারি?
আমি জাভাতে কীভাবে 20 টি এলোমেলো বাইট তৈরি করতে পারি?
উত্তর:
ব্যবহার করে দেখুন Random.nextBytes
পদ্ধতি:
byte[] b = new byte[20];
new Random().nextBytes(b);
আপনি যদি একটি ক্রিপ্টোগ্রাফি শক্তিশালী র্যান্ডম সংখ্যা উত্পাদক একটি তৃতীয় পক্ষের এপিআই ব্যবহার না করেই (এছাড়াও নিরাপদ থ্রেড) চান, আপনি ব্যবহার করতে পারেন SecureRandom
।
জাভা 6 এবং 7:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
জাভা 8 (আরও সুরক্ষিত):
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
আপনি যদি ইতিমধ্যে অ্যাপাচি কমন্স ল্যাং ব্যবহার করে থাকেন তবে মেকেরা RandomUtils
এটিকে এক-লাইনার করে তোলে:
byte[] randomBytes = RandomUtils.nextBytes(20);
জাভা 7 থ্রেডলোক্যালর্যান্ডম চালু করেছে যা বর্তমান থ্রেডের সাথে বিচ্ছিন্ন ।
এটি ম্যারিক্সের সমাধানের আরেকটি উপস্থাপনা ।
final byte[] bytes = new byte[20];
ThreadLocalRandom.current().nextBytes(bytes);
ThreadLocalRandom
? আরও ভাল:ThreadLocalRandom.current().nextBytes(bytes);
একটি বীজ সহ একটি এলোমেলো বস্তু তৈরি করুন এবং এ অ্যারে এলোমেলোভাবে করুন:
public static final int ARRAY_LENGTH = 20;
byte[] byteArray = new byte[ARRAY_LENGTH];
new Random(System.currentTimeMillis()).nextBytes(byteArray);
// get fisrt element
System.out.println("Random byte: " + byteArray[0]);
যারা এলোমেলো বাইট অ্যারে তৈরি করার জন্য আরও সুরক্ষিত উপায় চান তাদের পক্ষে হ্যাঁ সবচেয়ে সুরক্ষিত উপায় হ'ল:
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
তবে আপনার ওএসের উপর নির্ভর করে মেশিনে পর্যাপ্ত এলোমেলোতা না থাকলে আপনার থ্রেডগুলি ব্লক হতে পারে block নিম্নলিখিত সমাধান ব্লক করবে না:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
এর কারণ এটি প্রথম উদাহরণটি /dev/random
আরও এলোমেলো হওয়ার (মাউস / কীবোর্ড এবং অন্যান্য উত্স দ্বারা উত্পন্ন) অপেক্ষা করার সময় ব্যবহার করে এবং অবরুদ্ধ হবে। দ্বিতীয় উদাহরণ ব্যবহার করে /dev/urandom
যা ব্লক করবে না।