diff --git a/src/commonMain/kotlin/com/infendro/kdf/PBKDF2.kt b/src/commonMain/kotlin/com/infendro/kdf/PBKDF2.kt index 37fe773..6cd38f6 100644 --- a/src/commonMain/kotlin/com/infendro/kdf/PBKDF2.kt +++ b/src/commonMain/kotlin/com/infendro/kdf/PBKDF2.kt @@ -9,7 +9,6 @@ import com.infendro.mac.HMAC class PBKDF2( function: HashFunction, ) { - private val size = function.bytes private val hmac = HMAC(function) fun hash( @@ -18,23 +17,18 @@ class PBKDF2( iterations: Int, length: Int, ): ByteArray { - val key = mutableListOf() + val key = buildList { + for (i in 1..(length + size - 1) / size) { + val input = salt + i.toUInt().toByteArray() - for (i in 1..(length + size - 1) / size) { - val input = salt + i.toUInt().toByteArray() + var u = hmac.hash(value, input) + var result = u + repeat(iterations - 1) { + u = hmac.hash(value, u) + result = result xor u + } - var u = hmac.hash(value, input) - var result = u - repeat(iterations - 1) { - u = hmac.hash(value, u) - result = result xor u - } - - key.addAll(result) - - if (key.size >= length) { - println(key.size) - break + addAll(result) } }