import javax.crypto.Cipher import javax.crypto.SecretKey import javax.crypto.SecretKeyFactory import javax.crypto.spec.DESedeKeySpec fun main() { // Replace the keyString with your 3DES key in hexadecimal format val keyString = "40021940DAAEF8EFC7BADF9BFBB501B640021940DAAEF8EF" try { // Convert hexadecimal string to byte array val keyBytes = hexStringToByteArray(keyString) // Create DESedeKeySpec from the byte array val keySpec = DESedeKeySpec(keyBytes) // Create DESede key using SecretKeyFactory val keyFactory = SecretKeyFactory.getInstance("DESede") val key: SecretKey = keyFactory.generateSecret(keySpec) // Calculate and print Key Check Value (KCV) val kcv = calculateKCV(key) println("Key Check Value (KCV): $kcv") } catch (e: Exception) { e.printStackTrace() } } // Function to convert hexadecimal string to byte array fun hexStringToByteArray(hexString: String): ByteArray { return ByteArray(hexString.length / 2) { hexString.substring(it * 2, it * 2 + 2).toInt(16).toByte() } } // Function to convert byte array to hexadecimal string fun byteArrayToHexString(bytes: ByteArray): String { return bytes.joinToString("") { "%02X".format(it) } } // Function to calculate Key Check Value (KCV) for 3DES key fun calculateKCV(key: SecretKey): String { try { // Create a cipher with ECB mode and NoPadding val cipher = Cipher.getInstance("DESede/ECB/NoPadding") cipher.init(Cipher.ENCRYPT_MODE, key) // Encrypt a block of zeros and extract the first 8 hexadecimal characters val kcvBytes = cipher.doFinal(byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0)) val kcv = byteArrayToHexString(kcvBytes).substring(0, 16) println("Encrypted Zero Block: ${byteArrayToHexString(kcvBytes)}") return kcv } catch (e: Exception) { e.printStackTrace() return "" } }
Write, Run & Share Kotlin code online using OneCompiler's Kotlin online compiler for free. It's one of the robust, feature-rich online compilers for Kotlin language. Getting started with the OneCompiler's Kotlin editor is easy and fast. The editor shows sample boilerplate code when you choose language as Kotlin and start coding.