Thursday, September 18, 2025
HomeLanguagesJavaJava Program to Implement Naor-Reingold Pseudo Random Function

Java Program to Implement Naor-Reingold Pseudo Random Function

Naor-Reingold Pseudo-Random Function is a function of generating random numbers. Moni Naor and Omer Reingold described efficient constructions for various cryptographic primitives in the private key as well as public-key cryptography.

Example:

Input : N = 5
Output: 9.0, 9.0, 3.0, 9.0, 3.0

Input : N = 7
Output: 9.0, 81.0, 9.0, 9.0, 3.0, 3.0, 9.0

Algorithm:

  • Declare the variables p, l, g, n, x and arrays a[] and arr[]
  • Take input from the user for generating random numbers
  • Generate random numbers and use the defined approach:
Let p and l be prime numbers with l|p−1.
Select an element g ε Fp* of multiplicative order l. 
Then for each n-dimensional vector a = (a0,a1, ..., an).

They define the function as:
fa(x)=ga0.a1x1a2x2…..anxn ε Fp
  • Print the random numbers

Below is the implementation of the Naor-Reingold Pseudo-Random Function:

Java




// Java Program to Implement Naor-Reingold
// Pseudo Random Function
import java.util.*;
public class Main {
    public static void randomNumbers()
    {
        // Creating arrays and defining variables
        int p = 7, l = 2, g = 3, n = 6, x;
  
        int a[] = { 1, 2, 2, 1 };
  
        int arr[] = new int[4];
  
        Random random = new Random();
  
        int num = 10;
        System.out.println("The Random numbers are: ");
  
        // Generating Random Numbers using
        // Naor-Reingold Pseudo Random Function approach
        for (int i = 0; i < num; i++) {
            x = random.nextInt(num) % 16;
  
            for (int j = 3; j >= 0; j--) {
                arr[j] = x % 2;
                x /= 2;
            }
            int mult = 1;
  
            for (int k = 0; k < 4; k++) {
                mult *= Math.pow(a[k], arr[k]);
            }
            System.out.print(Math.pow(g, mult) + ", ");
        }
    }
    public static void main(String args[])
    {
        randomNumbers();
    }
}


Output

The Random numbers are: 
9.0, 9.0, 3.0, 81.0, 3.0, 81.0, 9.0, 9.0, 3.0, 3.0, 
RELATED ARTICLES

Most Popular

Dominic
32299 POSTS0 COMMENTS
Milvus
84 POSTS0 COMMENTS
Nango Kala
6663 POSTS0 COMMENTS
Nicole Veronica
11835 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11895 POSTS0 COMMENTS
Shaida Kate Naidoo
6779 POSTS0 COMMENTS
Ted Musemwa
7053 POSTS0 COMMENTS
Thapelo Manthata
6736 POSTS0 COMMENTS
Umr Jansen
6742 POSTS0 COMMENTS