blob: b96748c146178b839910670794dea6a7eeaea4ef (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package coffee.liz.rookery.bt
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec
/** [Aes128] over javax.crypto (AES/ECB/NoPadding); works on desktop JVMs and Android. */
object JvmAes128 : Aes128 {
private fun run(mode: Int, key: ByteArray, block: ByteArray): ByteArray {
require(key.size == 16 && block.size == 16) { "AES-128 needs a 16-byte key and block" }
val c = Cipher.getInstance("AES/ECB/NoPadding")
c.init(mode, SecretKeySpec(key, "AES"))
return c.doFinal(block)
}
override fun encryptBlock(key: ByteArray, block: ByteArray): ByteArray = run(Cipher.ENCRYPT_MODE, key, block)
override fun decryptBlock(key: ByteArray, block: ByteArray): ByteArray = run(Cipher.DECRYPT_MODE, key, block)
}
|