· 7 years ago · Oct 06, 2018, 08:18 AM
1## Code
2```kotlin
3import java.util.*
4import javax.crypto.Cipher
5import javax.crypto.SecretKey
6
7fun ByteArray.encryptDES(key: SecretKey): ByteArray? = try {
8 Cipher.getInstance("DES")?.run {
9 init(Cipher.ENCRYPT_MODE, key)
10 doFinal(this@encryptDES)
11 }
12} catch (e: Exception) {
13 null
14}
15
16fun ByteArray.decryptDES(key: SecretKey): ByteArray? = try {
17 Cipher.getInstance("DES")?.run {
18 init(Cipher.DECRYPT_MODE, key)
19 doFinal(this@decryptDES)
20 }
21} catch (e: Exception) {
22 null
23}
24
25fun ByteArray.toBase64(): ByteArray = Base64.getEncoder().encode(this)
26fun ByteArray.toBase64String(): String = toBase64().toRealString()
27fun ByteArray.fromBase64(): ByteArray? = Base64.getDecoder().decode(this)
28
29
30fun String.decryptBase64DES(key: SecretKey): String? = toByteArray().fromBase64()?.decryptDES(key)?.toRealString()
31fun String.encryptBase64DES(key: SecretKey): String? = toByteArray().encryptDES(key)?.toBase64String()
32fun ByteArray.toRealString(): String = String(this)
33
34fun String.decryptBase64DES(key: SecretKey): String? = toByteArray().fromBase64()?.decryptDES(key)?.toRealString()
35fun String.encryptBase64DES(key: SecretKey): String? = toByteArray().encryptDES(key)?.toBase64String()
36fun ByteArray.toRealString(): String = String(this)
37```
38
39## Test
40```kotlin
41import io.kotlintest.shouldBe
42import io.kotlintest.specs.StringSpec
43
44class EncryptionExtensionKtTest : StringSpec({
45 "DES-Base64 encryption test" {
46 "this-is-something-to-encrypt".encryptBase64DES(
47 "this-is-test-key-text".toDESKey()
48 ) shouldBe "YHX0KrpeoF6+5QY6w9bt8qn03dZgmDwe2odggfXO0Q4="
49 }
50
51 "DES-Base64 decryption test" {
52 "YHX0KrpeoF6+5QY6w9bt8qn03dZgmDwe2odggfXO0Q4=".decryptBase64DES(
53 "this-is-test-key-text".toDESKey()
54 ) shouldBe "this-is-something-to-encrypt"
55 }
56}
57```