refactor HashFunction
This commit is contained in:
@@ -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(),
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user