refactor HashFunction

This commit is contained in:
2025-11-10 14:26:41 +01:00
parent e3619a2df1
commit e7e43f9cca
15 changed files with 115 additions and 126 deletions

View File

@@ -1,7 +1,6 @@
package com.infendro.hash.sha2
import com.infendro.bytearray.addAll
import com.infendro.bytearray.toByteArray
import com.infendro.bytearray.toUByteArray
import com.infendro.bytearray.toUIntArray
import com.infendro.hash.HashFunction
@@ -10,7 +9,7 @@ object `SHA-224` : HashFunction() {
override val bytes: Int
get() = 28
private val k = arrayOf(
private val k = uintArrayOf(
0x428a2f98U, 0x71374491U, 0xb5c0fbcfU, 0xe9b5dba5U, 0x3956c25bU, 0x59f111f1U, 0x923f82a4U, 0xab1c5ed5U,
0xd807aa98U, 0x12835b01U, 0x243185beU, 0x550c7dc3U, 0x72be5d74U, 0x80deb1feU, 0x9bdc06a7U, 0xc19bf174U,
0xe49b69c1U, 0xefbe4786U, 0x0fc19dc6U, 0x240ca1ccU, 0x2de92c6fU, 0x4a7484aaU, 0x5cb0a9dcU, 0x76f988daU,
@@ -22,8 +21,8 @@ object `SHA-224` : HashFunction() {
)
override fun hash(
value: ByteArray,
): ByteArray {
value: UByteArray,
): UByteArray {
var h0 = 0xc1059ed8U
var h1 = 0x367cd507U
var h2 = 0x3070dd17U
@@ -36,15 +35,15 @@ object `SHA-224` : HashFunction() {
val paddedValue = buildList {
addAll(value)
add(0x80.toByte())
add(0x80U)
while (size % 64 != 56) {
add(0x00.toByte())
add(0x00U)
}
addAll(ml.toByteArray())
addAll(ml.toUByteArray())
}
val chunks = paddedValue
.chunked(64)
.chunked(64) { it.toUByteArray() }
for (chunk in chunks) {
val w = buildList {
addAll(chunk.toUIntArray())
@@ -92,14 +91,14 @@ object `SHA-224` : HashFunction() {
h7 += h
}
return byteArrayOf(
*h0.toByteArray(),
*h1.toByteArray(),
*h2.toByteArray(),
*h3.toByteArray(),
*h4.toByteArray(),
*h5.toByteArray(),
*h6.toByteArray(),
return ubyteArrayOf(
*h0.toUByteArray(),
*h1.toUByteArray(),
*h2.toUByteArray(),
*h3.toUByteArray(),
*h4.toUByteArray(),
*h5.toUByteArray(),
*h6.toUByteArray(),
)
}
}