কম্পিউটার

নাওর-রিনগোল্ড সিউডো র্যান্ডম ফাংশন বাস্তবায়নের জন্য C++ প্রোগ্রাম


নাওর-রিনগোল্ড সিউডো র্যান্ডম ফাংশন হল এলোমেলো সংখ্যা তৈরির আরেকটি পদ্ধতি।

মনি নাওর এবং ওমের রিনগোল্ড 1997 সালে প্রাইভেট কী এবং পাবলিক-কি ক্রিপ্টোগ্রাফিতে বিভিন্ন ক্রিপ্টোগ্রাফিক প্রাইমিটিভের জন্য দক্ষ নির্মাণ বর্ণনা করেছেন। p এবং l কে l |p−1 সহ মৌলিক সংখ্যা বলা যাক। গুণক ক্রম l এর একটি উপাদান g ε Fp* নির্বাচন করুন। তারপর প্রতিটি n-মাত্রিক ভেক্টরের জন্য a =(a0 ,a1 , ..., an )।

তারা ফাংশন সংজ্ঞায়িত করে

fa(x)=ga0.a1x1a2x2…..anxn ε Fp

যেখানে x =x1 … xn পূর্ণসংখ্যা x, 0 ≤ x ≤ 2 n−1 এর বিট উপস্থাপনা

এই ফাংশনটি সিমেট্রিক এনক্রিপশন, প্রমাণীকরণ এবং ডিজিটাল স্বাক্ষর সহ অনেক ক্রিপ্টোগ্রাফিক স্কিমের ভিত্তি হিসাবে ব্যবহার করা যেতে পারে৷

অ্যালগরিদম

Begin
   Declare the variables p, l, g, n, x
   Read the variables p, l, g, n
   Declare array a[], b[]
   For i=0 to 10, do
      x = rand() mod 16;
      For j=g to 0, do
         b[j] = x mod 2;
         x =x divided by2;
      Done
      Assign mult = 1
      For k = 0 to n do
         mult = mult *(pow(a[k], b[k]))
      Done
      Print the random numbers
   Done
End

উদাহরণ কোড

#include <iostream>
using namespace std;
int main(int argc, char **argv) {
   int p = 7, l = 2, g = 3, n = 6, x;
   int a[] = { 1, 2, 2, 1 };
   int b[4];
   cout << "The Random numbers are: ";
   for (int i = 0; i < 10; i++) {
      x = rand() % 16;
      for (int j = 3; j >= 0; j--) {
         b[j] = x % 2;
         x /= 2;
      }
      int mult = 1;
      for (int k = 0; k < 6; k++)
         mult *= pow(a[k], b[k]);
      cout << pow(g, mult)<<" ";
   }
}

আউটপুট

The Random numbers are: 81 81 3 9 3 81 9 9 3 9

  1. সিজার সাইফার বাস্তবায়নের জন্য C++ প্রোগ্রাম

  2. AVL ট্রি বাস্তবায়নের জন্য C++ প্রোগ্রাম

  3. STL-এ সেট_সিমেট্রিক_ডিফারেন্স বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. সিউডো র্যান্ডম নম্বর জেনারেশনের জন্য লিনিয়ার কনগ্রুয়েনশিয়াল জেনারেটর বাস্তবায়নের জন্য C++ প্রোগ্রাম