diff --git a/README.md b/README.md index e693b49..688045b 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Supported [PRNG](https://en.wikipedia.org/wiki/Pseudorandom_number_generator) algorithms: - LCG -- Xoshiro256++ -- Xoshiro256** +- xoshiro256++ +- xoshiro256** Supported [CSPRNG](https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) algorithms: - HMAC-DRBG @@ -20,7 +20,7 @@ repositories { } dependencies { - implementation("com.infendro:prng:1.3.0") + implementation("com.infendro:prng:1.3.1") } ``` @@ -29,7 +29,7 @@ dependencies { ```kotlin fun main() { // create PRNG instance - val rng = CSPRNG.HMAC(`SHA-256`) + val rng = CSPRNG.HMAC(`SHA-256`()) // seed PRNG to receive deterministic numbers rng.seed(/* seed */) diff --git a/build.gradle.kts b/build.gradle.kts index 267fc8f..1e920ac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ import com.infendro.plugin.token import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl group = "com.infendro" -version = "1.3.0" +version = "1.3.1" plugins { alias(libs.plugins.infendro) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4215199..07641bb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] infendro = "1.1.0" kotlin = "2.3.0" -bytes = "1.4.0" -hash = "1.6.0" -mac = "1.4.0" +bytes = "1.4.2" +hash = "1.7.0" +mac = "1.5.0" [plugins] infendro = { id = "com.infendro.plugin", version.ref = "infendro" } diff --git a/src/commonMain/kotlin/com/infendro/random/prng/LCG.kt b/src/commonMain/kotlin/com/infendro/random/prng/LCG.kt index 085e622..7ccf4f1 100644 --- a/src/commonMain/kotlin/com/infendro/random/prng/LCG.kt +++ b/src/commonMain/kotlin/com/infendro/random/prng/LCG.kt @@ -6,6 +6,8 @@ import com.infendro.random.PRNG import kotlin.properties.Delegates.notNull class LCG : PRNG() { + private val function = `SHA-256`() + private val a: Long = 25214903917L private val c: Long = 11L private val mask: Long = (1L shl 48) - 1 @@ -13,7 +15,7 @@ class LCG : PRNG() { private var x: Long by notNull() override fun seed(seed: ByteArray) { - x = `SHA-256`.hash(seed).toLong() and mask + x = function.hash(seed).toLong() and mask } override fun generate(): Int { diff --git a/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256pp.kt b/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256pp.kt index ff60ce8..1297334 100644 --- a/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256pp.kt +++ b/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256pp.kt @@ -6,10 +6,12 @@ import com.infendro.random.PRNG import kotlin.properties.Delegates.notNull class Xoshiro256pp : PRNG() { + private val function = `SHA-256`() + private var s: LongArray by notNull() override fun seed(seed: ByteArray) { - s = `SHA-256`.hash(seed).toLongArray() + s = function.hash(seed).toLongArray() } override fun generate(): Int { diff --git a/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256ss.kt b/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256ss.kt index 6fbfb1a..0eeb4db 100644 --- a/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256ss.kt +++ b/src/commonMain/kotlin/com/infendro/random/prng/Xoshiro256ss.kt @@ -6,10 +6,12 @@ import com.infendro.random.PRNG import kotlin.properties.Delegates.notNull class Xoshiro256ss : PRNG() { + private val function = `SHA-256`() + private var s: LongArray by notNull() override fun seed(seed: ByteArray) { - s = `SHA-256`.hash(seed).toLongArray() + s = function.hash(seed).toLongArray() } override fun generate(): Int {