# Kotlin OTP This library provides various [Pseudorandom Number Generator](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) implementations in Kotlin Multiplatform. ## Features * Generate random numbers using Kotlin's Random interface. * Seed the PRNGs to receive predictable results. * Reseed the PRNGs to add entropy to the following results. * [HMAC DRBG](https://en.wikipedia.org/wiki/NIST_SP_800-90A#Hash_DRBG_and_HMAC_DRBG) * Multiplatform support * JVM * JavaScript * Native (Linux) ## Installation Add the following to your `build.gradle.kts`. ```kotlin repositories { maven("https://git.infendro.com/api/packages/Infendro/maven") } dependencies { implementation("com.infendro:random:1.0.0") } ``` ## Usage ```kotlin import com.infendro.hash.SHA256 import com.infendro.random.PRNG fun main() { // create a PRNG instance val rng = PRNG.HMAC(SHA256) // seed the PRNG to receive predictable results rng.seed(/* some seed */) val a = rng.nextInt() val b = rng.nextInt() val c = rng.nextInt() // reseed the PRNG to add entropy to the following results rng.reseed(/* some random entropy */) val d = rng.nextInt() val e = rng.nextInt() val f = rng.nextInt() // each run: // a, b, and c will be predictable // d, e, and f will be random (assuming the entropy is also random) } ```