Sunday, June 14, 2026
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
32515 POSTS0 COMMENTS
Milvus
131 POSTS0 COMMENTS
Nango Kala
6897 POSTS0 COMMENTS
Nicole Veronica
12013 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12109 POSTS0 COMMENTS
Shaida Kate Naidoo
7019 POSTS0 COMMENTS
Ted Musemwa
7262 POSTS0 COMMENTS
Thapelo Manthata
6976 POSTS0 COMMENTS
Umr Jansen
6964 POSTS0 COMMENTS