From a8ad00a690830d392ed92cd79ee2100d20fbcdc5 Mon Sep 17 00:00:00 2001 From: Ugljesa Jovanovic Date: Sat, 21 Sep 2019 22:52:10 +0200 Subject: [PATCH] Remove padding when decrypting --- .../kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbc.kt | 7 +++++-- .../com/ionspin/kotlin/crypto/symmetric/AesCbcTest.kt | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbc.kt b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbc.kt index b0f1fc0..33663a5 100644 --- a/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbc.kt +++ b/multiplatform-crypto/src/commonMain/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbc.kt @@ -18,7 +18,6 @@ package com.ionspin.kotlin.crypto.symmetric import com.ionspin.kotlin.crypto.SRNG import com.ionspin.kotlin.crypto.chunked -import com.ionspin.kotlin.crypto.toHexString import com.ionspin.kotlin.crypto.xor /** @@ -125,7 +124,11 @@ class AesCbc internal constructor(val aesKey: AesKey, val mode: Mode, initializa } fun decrypt(): Array { - return output.reversed().foldRight(Array(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(0) { 0U }) { arrayOfUBytes, acc -> acc + arrayOfUBytes } } private fun appendToBuffer(array: Array, start: Int) { diff --git a/multiplatform-crypto/src/commonTest/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbcTest.kt b/multiplatform-crypto/src/commonTest/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbcTest.kt index 442df8d..12c3370 100644 --- a/multiplatform-crypto/src/commonTest/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbcTest.kt +++ b/multiplatform-crypto/src/commonTest/kotlin/com/ionspin/kotlin/crypto/symmetric/AesCbcTest.kt @@ -66,4 +66,8 @@ class AesCbcTest { + + + + } \ No newline at end of file