Este código generará una clave secreta de 128 bits para TDEA, cifrará el mensaje original utilizando esta clave y luego lo descifrará nuevamente para obtener el mensaje original. Ten en cuenta que para fines de seguridad en aplicaciones reales, debes manejar adecuadamente el almacenamiento y manejo de claves.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import javax.crypto.Cipher import javax.crypto.KeyGenerator import javax.crypto.SecretKey import javax.crypto.spec.SecretKeySpec import java.nio.charset.StandardCharsets import java.util.Base64 fun main() { // Texto a cifrar val mensajeOriginal = "Este es un mensaje secreto." // Generar una clave secreta de 128 bits para TDEA val clave: SecretKey = generarClaveSecretoTDEA() // Cifrar el mensaje val mensajeCifrado = cifrarTDEA(mensajeOriginal, clave) // Descifrar el mensaje val mensajeDescifrado = descifrarTDEA(mensajeCifrado, clave) println("Mensaje original: $mensajeOriginal") println("Mensaje cifrado: $mensajeCifrado") println("Mensaje descifrado: $mensajeDescifrado") } fun generarClaveSecretoTDEA(): SecretKey { val keyGenerator = KeyGenerator.getInstance("DESede") keyGenerator.init(168) // Usar 168 bits para TDEA return keyGenerator.generateKey() } fun cifrarTDEA(texto: String, clave: SecretKey): String { val cipher = Cipher.getInstance("DESede") cipher.init(Cipher.ENCRYPT_MODE, clave) val textoCifrado = cipher.doFinal(texto.toByteArray(StandardCharsets.UTF_8)) return Base64.getEncoder().encodeToString(textoCifrado) } fun descifrarTDEA(textoCifrado: String, clave: SecretKey): String { val cipher = Cipher.getInstance("DESede") cipher.init(Cipher.DECRYPT_MODE, clave) val textoDescifrado = cipher.doFinal(Base64.getDecoder().decode(textoCifrado)) return String(textoDescifrado, StandardCharsets.UTF_8) } |