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 45 46 47 48 49 50 51 52 53 |
import java.security.KeyPairGenerator import java.security.KeyFactory import java.security.spec.X509EncodedKeySpec import java.security.spec.PKCS8EncodedKeySpec import javax.crypto.Cipher fun main() { val message = "Hola, mundo!" // Mensaje a cifrar // Generar el par de claves pública y privada val keyPairGenerator = KeyPairGenerator.getInstance("RSA") keyPairGenerator.initialize(2048) // Tamaño de la clave val keyPair = keyPairGenerator.genKeyPair() // Obtener la clave pública y privada val publicKey = keyPair.public.encoded val privateKey = keyPair.private.encoded // Cifrar el mensaje con la clave pública val encryptedMessage = encrypt(message, publicKey) // Descifrar el mensaje con la clave privada val decryptedMessage = decrypt(encryptedMessage, privateKey) println("Mensaje original: $message") println("Mensaje cifrado: $encryptedMessage") println("Mensaje descifrado: $decryptedMessage") } // Función para cifrar utilizando clave pública fun encrypt(message: String, publicKeyBytes: ByteArray): ByteArray { val publicKeySpec = X509EncodedKeySpec(publicKeyBytes) val keyFactory = KeyFactory.getInstance("RSA") val publicKey = keyFactory.generatePublic(publicKeySpec) val cipher = Cipher.getInstance("RSA") cipher.init(Cipher.ENCRYPT_MODE, publicKey) return cipher.doFinal(message.toByteArray()) } // Función para descifrar utilizando clave privada fun decrypt(encryptedMessage: ByteArray, privateKeyBytes: ByteArray): String { val privateKeySpec = PKCS8EncodedKeySpec(privateKeyBytes) val keyFactory = KeyFactory.getInstance("RSA") val privateKey = keyFactory.generatePrivate(privateKeySpec) val cipher = Cipher.getInstance("RSA") cipher.init(Cipher.DECRYPT_MODE, privateKey) val decryptedBytes = cipher.doFinal(encryptedMessage) return String(decryptedBytes) } |