CSPRNG (Cryptographically Secure Pseudorandom Number Generator) হল একটি বিশেষ ধরনের র্যান্ডম নাম্বার জেনারেটর যা নিরাপদ র্যান্ডম মান তৈরি করতে ডিজাইন করা হয়েছে, যাতে সেগুলি শত্রুর কাছ থেকে অনুমান করা কঠিন হয়। PHP 7-এ, random_bytes() এবং random_int() ফাংশন দুটি CSPRNG প্রস্তাব করে, যেগুলি নিরাপদ এবং ক্রিপ্টোগ্রাফিক উদ্দেশ্যে ব্যবহৃত র্যান্ডম ডেটা তৈরি করতে ব্যবহৃত হয়।
1. random_bytes() Function
random_bytes() ফাংশনটি একটি নির্দিষ্ট দৈর্ঘ্যের ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র্যান্ডম বাইট স্ট্রিং তৈরি করে। এটি র্যান্ডম বাইটগুলির একটি সিকোয়েন্স প্রদান করে, যা সিকিউরিটি-কেন্দ্রিক কাজের জন্য ব্যবহার করা যেতে পারে, যেমন টোকেন, সেশন আইডি, বা এনক্রিপশন কীগুলি তৈরি করা।
গঠন:
random_bytes(int $length): string- $length: এটি র্যান্ডম বাইট স্ট্রিংটির দৈর্ঘ্য (বাইটে) যা তৈরি করা হবে। এটি একটি ধনাত্মক পূর্ণসংখ্যা হতে হবে।
- ফাংশনটি একটি স্ট্রিং রিটার্ন করে, যা র্যান্ডম বাইটগুলির সিকোয়েন্স।
উদাহরণ:
<?php
// 16 বাইট দৈর্ঘ্যের নিরাপদ র্যান্ডম বাইট তৈরি করা হচ্ছে
$randomBytes = random_bytes(16);
echo bin2hex($randomBytes); // আউটপুট হবে: একটি হেক্সাডেসিমাল স্ট্রিং
?>এখানে, random_bytes(16) 16 বাইট দৈর্ঘ্যের একটি র্যান্ডম বাইট স্ট্রিং তৈরি করেছে, যা bin2hex() ফাংশনের মাধ্যমে হেক্সাডেসিমাল ফরম্যাটে কনভার্ট করা হয়েছে।
2. random_int() Function
random_int() ফাংশনটি একটি নিরাপদ, ক্রিপ্টোগ্রাফিকভাবে নিরাপদ পূর্ণসংখ্যা (integer) তৈরি করে, যা একটি নির্দিষ্ট পরিসরের মধ্যে থাকে। এটি সংখ্যা তৈরি করতে ব্যবহৃত হয় যা নিরাপদ এবং শত্রুর অনুমান করা কঠিন। এটি random_bytes() এর তুলনায় সরাসরি পূর্ণসংখ্যা রিটার্ন করে, যা ব্যবহারকারীদের জন্য আরও সুবিধাজনক হতে পারে।
গঠন:
random_int(int $min, int $max): int- $min: উৎপন্ন সংখ্যা যেটি এই পরিসরের ন্যূনতম হতে হবে।
- $max: উৎপন্ন সংখ্যা যেটি এই পরিসরের সর্বোচ্চ হতে হবে।
- এই ফাংশনটি একটি পূর্ণসংখ্যা রিটার্ন করবে যা $min এবং $max এর মধ্যে থাকবে (অন্তর্ভুক্ত)।
উদাহরণ:
<?php
// 1 থেকে 100 এর মধ্যে নিরাপদ র্যান্ডম পূর্ণসংখ্যা তৈরি করা হচ্ছে
$randomInt = random_int(1, 100);
echo $randomInt; // আউটপুট হবে: 1 এবং 100 এর মধ্যে একটি র্যান্ডম পূর্ণসংখ্যা
?>এখানে, random_int(1, 100) 1 থেকে 100 এর মধ্যে একটি র্যান্ডম পূর্ণসংখ্যা তৈরি করেছে।
random_bytes() এবং random_int() এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | random_bytes() | random_int() |
|---|---|---|
| ফাংশনের উদ্দেশ্য | র্যান্ডম বাইট স্ট্রিং তৈরি করা | একটি নিরাপদ র্যান্ডম পূর্ণসংখ্যা তৈরি করা |
| আউটপুট | স্ট্রিং (র্যান্ডম বাইট) | পূর্ণসংখ্যা (int) |
| ব্যবহার | ক্রিপ্টোগ্রাফিক কীগুলির জন্য, সেশন টোকেন ইত্যাদির জন্য | সাধারণ র্যান্ডম নাম্বার জেনারেশনের জন্য |
| ডাটা ফরম্যাট | বাইট স্ট্রিং | পূর্ণসংখ্যা |
| দ্বারা ব্যবহৃত | এনক্রিপশন, সেশন আইডি, বা টোকেন তৈরি করতে | সাধারণভাবে অ্যাপ্লিকেশনে র্যান্ডম নম্বর দরকারে |
কেন random_bytes() এবং random_int() গুরুত্বপূর্ণ?
- নিরাপত্তা: এ দুটি ফাংশনই নিরাপদ র্যান্ডম ডেটা তৈরি করার জন্য ডিজাইন করা হয়েছে, যা শত্রুর অনুমান করা কঠিন। এগুলি ক্রিপ্টোগ্রাফিক অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত গুরুত্বপূর্ণ।
- ক্রিপ্টোগ্রাফিক উদ্দেশ্য:
random_bytes()সাধারণত এনক্রিপশন কীগুলি, সেশন আইডি, বা নিরাপদ টোকেন তৈরি করার জন্য ব্যবহৃত হয়, যখনrandom_int()সাধারণ র্যান্ডম নম্বর জেনারেশনের জন্য ব্যবহৃত হয়। - বিপজ্জনক র্যান্ডম ফাংশন ব্যবহার এড়ানো: PHP 7 এর পূর্বে,
rand()এবংmt_rand()যেমন ফাংশনগুলি নিরাপদ নয়, কারণ এগুলি প্রেডিক্টেবল র্যান্ডম নাম্বার তৈরি করে।random_bytes()এবংrandom_int()এগুলির তুলনায় অনেক বেশি নিরাপদ এবং শক্তিশালী।
সারসংক্ষেপ
random_bytes() এবং random_int() PHP 7-এ প্রবর্তিত দুটি গুরুত্বপূর্ণ ফাংশন যা নিরাপদ, ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র্যান্ডম ডেটা তৈরি করতে ব্যবহৃত হয়। random_bytes() বাইট স্ট্রিং তৈরি করে এবং random_int() একটি নিরাপদ পূর্ণসংখ্যা তৈরি করে, যা নিরাপদ ও শত্রুদের অনুমান করা কঠিন। এগুলি ক্রিপ্টোগ্রাফি, সেশন আইডি বা নিরাপদ টোকেন তৈরির মতো কাজে ব্যবহার করা হয়।
Read more