Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

नाओर-रींगोल्ड स्यूडो रैंडम फंक्शन को लागू करने के लिए सी++ प्रोग्राम

Naor-Reingold Pseudo Random Function, यादृच्छिक संख्याएँ उत्पन्न करने का एक अन्य तरीका है।

मोनी नाओर और ओमर रींगोल्ड ने 1997 में निजी कुंजी के साथ-साथ सार्वजनिक-कुंजी क्रिप्टोग्राफ़ी में विभिन्न क्रिप्टोग्राफ़िक प्रिमिटिव के लिए कुशल निर्माण का वर्णन किया। मान लीजिए कि p और l अभाज्य संख्याएँ हैं l |p−1। गुणन क्रम l का एक तत्व g Fp* चुनें। फिर प्रत्येक n-आयामी वेक्टर के लिए a =(a0 .) ,a1 , ..., an )।

वे फ़ंक्शन को परिभाषित करते हैं

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

जहां x =x<उप>1 ... एक्स<उप>एन पूर्णांक 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. सी ++ प्रोग्राम सीजर साइफर को लागू करने के लिए

    यह एक मोनो-अल्फाबेटिक सिफर है जिसमें प्लेनटेक्स्ट के प्रत्येक अक्षर को सिफरटेक्स्ट बनाने के लिए दूसरे अक्षर द्वारा प्रतिस्थापित किया जाता है। यह प्रतिस्थापन सिफर योजना का सबसे सरल रूप है। इस क्रिप्टोसिस्टम को आमतौर पर शिफ्ट सिफर के रूप में जाना जाता है। अवधारणा प्रत्येक वर्णमाला को दूसरे वर्णमाला स

  1. AVL ट्री को लागू करने के लिए C++ प्रोग्राम

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां सभी नोड्स के लिए बाएं और दाएं सबट्री की ऊंचाई के बीच का अंतर एक से अधिक नहीं हो सकता है। ट्री रोटेशन एक ऐसा ऑपरेशन है जो AVL ट्री पर तत्वों के क्रम में हस्तक्षेप किए बिना संरचना को बदलता है। यह पेड़ में एक नोड को ऊपर और एक नोड को नीचे ले जाता है।

  1. STL में Set_Symmetric_difference को लागू करने के लिए C++ प्रोग्राम

    यह सेट_सिमेट्रिक_डिफरेंस को लागू करने के लिए एक सी ++ प्रोग्राम है। दो सेटों का सममित अंतर उन तत्वों द्वारा निर्मित होता है जो एक सेट में मौजूद होते हैं, लेकिन दूसरे में नहीं। सामान्य सेट ऑपरेशन हैं - संघ सेट करें चौराहे सेट करें सममित सेट अंतर या अनन्य-या अंतर या घटाव सेट करें एल्गोरिदम Begin