Fixed row mixing

This commit is contained in:
Ugljesa Jovanovic 2020-05-14 22:48:19 +02:00 committed by Ugljesa Jovanovic
parent 9b800e34bc
commit 3519d2240f
No known key found for this signature in database
GPG Key ID: 178E6DFCECCB0E0F
2 changed files with 11 additions and 9 deletions

View File

@ -113,13 +113,9 @@ class Argon2 internal constructor(
val z = Array<UByte>(1024) { 0U }
// Do the argon/blake2b mixing on rows
for (i in 0..7) {
println("Q round $i")
q.hexColumsPrint(16)
val startOfRow = (i * 8 * 16)
val endOfRow = startOfRow + (8 * 16)
val rowToMix = r.copyOfRange(startOfRow, endOfRow)
println("Mixing row:")
rowToMix.hexColumsPrint(16)
mixRound(rowToMix)
.map { it.toLittleEndianUByteArray() }
.flatMap { it.asIterable() }
@ -130,6 +126,7 @@ class Argon2 internal constructor(
q.hexColumsPrint(16)
// Do the argon/blake2b mixing on columns
for (i in 0..7) {
println("Z round ${i}")
copyIntoGBlockColumn(
z,
i,
@ -142,7 +139,7 @@ class Argon2 internal constructor(
println("---- Z -----")
z.hexColumsPrint(16)
val final = if (xorWithCurrentBlock) {
println("Z xor R xoe CURRENT")
println("Z xor R xor CURRENT")
(z xor r) xor ((x xor y) xor currentBlock)
} else {
println("Z xor R")
@ -156,14 +153,18 @@ class Argon2 internal constructor(
private fun extractColumnFromGBlock(gBlock: Array<UByte>, columnPosition: Int): Array<UByte> {
val result = Array<UByte>(128) { 0U }
for (i in 0..7) {
result[i] = gBlock[i * 8 + columnPosition]
gBlock.copyOfRange(i * 128 + (columnPosition * 16), i * 128 + (columnPosition * 16) + 16).copyInto(result, i * 16)
}
return result
}
private fun copyIntoGBlockColumn(gBlock: Array<UByte>, columnPosition: Int, columnData: Array<UByte>) {
for (i in 0..7) {
gBlock[i * 8 + columnPosition] = columnData[i]
println("Mixed column data ${i}")
val column = columnData.copyOfRange(i * 16, i * 16 + 16)
column.hexColumsPrint(16)
column.copyInto(gBlock, i * 128 + columnPosition * 16)
// gBlock[i * 8 + columnPosition] = columnData[i]
}
}
@ -180,6 +181,7 @@ class Argon2 internal constructor(
v = mix(v, 1, 6, 11, 12)
v = mix(v, 2, 7, 8, 13)
v = mix(v, 3, 4, 9, 14)
v.hexColumsPrint(2)
return v
}

View File

@ -31,8 +31,8 @@ fun Array<UByte>.hexColumsPrint(chunk : Int = 16) {
printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) }
}
fun Array<ULong>.hexColumsPrint() {
val printout = this.map { it.toString(16) }.chunked(3)
fun Array<ULong>.hexColumsPrint(chunk: Int = 3) {
val printout = this.map { it.toString(16) }.chunked(chunk)
printout.forEach { println(it.joinToString(separator = " ") { it.toUpperCase() }) }
}