In 1997, Moni Naor and Omer Reingold described efficient constructions for various cryptographic primitives in private key as well as public-key cryptography. Their result is the construction of an efficient pseudorandom function. Let p and l be prime numbers with l |p−1. Select an element g ∈ F p ∗ {\displaystyle {\mathbb {F} _{p}}^{*}} of multiplicative order l. Then for each (n+1)-dimensional vector a = (a0,a1, ..., an)∈ ( F l ) n + 1 {\displaystyle (\mathbb {F} _{l})^{n+1}} they define the function
where x = x1 ... xn is the bit representation of integer x, 0 ≤ x ≤ 2n−1, with some extra leading zeros if necessary.