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.sha1
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
@@ -11,8 +10,8 @@ object SHA1 : HashFunction() {
get() = 20
override fun hash(
value: ByteArray,
): ByteArray {
value: UByteArray,
): UByteArray {
var h0 = 0x67452301U
var h1 = 0xefcdaB89U
var h2 = 0x98badcfeU
@@ -22,15 +21,15 @@ object SHA1 : 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())
@@ -74,12 +73,12 @@ object SHA1 : HashFunction() {
h4 += e
}
return byteArrayOf(
*h0.toByteArray(),
*h1.toByteArray(),
*h2.toByteArray(),
*h3.toByteArray(),
*h4.toByteArray(),
return ubyteArrayOf(
*h0.toUByteArray(),
*h1.toUByteArray(),
*h2.toUByteArray(),
*h3.toUByteArray(),
*h4.toUByteArray(),
)
}
}