Remove padding when decrypting

This commit is contained in:
Ugljesa Jovanovic 2019-09-21 22:52:10 +02:00 committed by Ugljesa Jovanovic
parent 8ecc55af1f
commit a8ad00a690
No known key found for this signature in database
GPG Key ID: 33A5F353387711A5
2 changed files with 9 additions and 2 deletions

View File

@ -18,7 +18,6 @@ package com.ionspin.kotlin.crypto.symmetric
import com.ionspin.kotlin.crypto.SRNG import com.ionspin.kotlin.crypto.SRNG
import com.ionspin.kotlin.crypto.chunked import com.ionspin.kotlin.crypto.chunked
import com.ionspin.kotlin.crypto.toHexString
import com.ionspin.kotlin.crypto.xor import com.ionspin.kotlin.crypto.xor
/** /**
@ -125,7 +124,11 @@ class AesCbc internal constructor(val aesKey: AesKey, val mode: Mode, initializa
} }
fun decrypt(): Array<UByte> { fun decrypt(): Array<UByte> {
return output.reversed().foldRight(Array<UByte>(0) { 0U }) { arrayOfUBytes, acc -> acc + arrayOfUBytes } val removePaddingCount = output.last().last()
val removedPadding = output.last().dropLast(removePaddingCount.toInt() and 0x7F)
val preparedOutput = output.dropLast(1).toTypedArray() + removedPadding.toTypedArray()
return preparedOutput.reversed().foldRight(Array<UByte>(0) { 0U }) { arrayOfUBytes, acc -> acc + arrayOfUBytes }
} }
private fun appendToBuffer(array: Array<UByte>, start: Int) { private fun appendToBuffer(array: Array<UByte>, start: Int) {