Skip to content

Commit 24043bc

Browse files
authored
[KTLN-816] Add Samples (#808)
1 parent 44d19c4 commit 24043bc

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.aes
2+
3+
import javax.crypto.Cipher
4+
import javax.crypto.KeyGenerator
5+
import javax.crypto.SecretKey
6+
import javax.crypto.spec.IvParameterSpec
7+
8+
fun generateAESKey(keySize: Int = 256): SecretKey {
9+
val keyGenerator = KeyGenerator.getInstance("AES")
10+
keyGenerator.init(keySize)
11+
return keyGenerator.generateKey()
12+
}
13+
14+
fun aesEncrypt(data: ByteArray, secretKey: SecretKey): ByteArray {
15+
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
16+
val ivParameterSpec = IvParameterSpec(ByteArray(16)) // Use a secure IV in production
17+
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec)
18+
return cipher.doFinal(data)
19+
}
20+
21+
fun aesDecrypt(encryptedData: ByteArray, secretKey: SecretKey): ByteArray {
22+
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
23+
val ivParameterSpec = IvParameterSpec(ByteArray(16)) // Use the same IV as used in encryption
24+
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec)
25+
return cipher.doFinal(encryptedData)
26+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.baeldung.aes
2+
3+
import org.junit.jupiter.api.Assertions.assertEquals
4+
import org.junit.jupiter.api.Test
5+
6+
class EncryptionDecryptionUnitTest {
7+
@Test
8+
fun `Given text when encrypted and decrypted should return original text`() {
9+
val originalText = "Hello Kotlin AES Encryption!"
10+
val secretKey = generateAESKey(256)
11+
12+
val encryptedData = aesEncrypt(originalText.toByteArray(), secretKey)
13+
val decryptedData = aesDecrypt(encryptedData, secretKey)
14+
val decryptedText = String(decryptedData)
15+
16+
assertEquals(originalText, decryptedText, "The decrypted text does not match the original")
17+
}
18+
}

0 commit comments

Comments
 (0)