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 |
import java.security.* import java.security.spec.PKCS8EncodedKeySpec import java.security.spec.X509EncodedKeySpec import java.nio.file.Files import java.nio.file.Paths fun main() { // Generar el par de claves pública y privada RSA val keyPair = generateRSAKeyPair() // Guardar las claves en archivos saveKeyToFile(keyPair.public, "public_key.pem") saveKeyToFile(keyPair.private, "private_key.pem") // Cargar las claves desde los archivos val publicKey = loadPublicKeyFromFile("public_key.pem") val privateKey = loadPrivateKeyFromFile("private_key.pem") println("Clave pública:\n$publicKey") println("Clave privada:\n$privateKey") } // Generar un par de claves RSA fun generateRSAKeyPair(): KeyPair { val keyPairGenerator = KeyPairGenerator.getInstance("RSA") keyPairGenerator.initialize(2048) // Tamaño de la clave RSA return keyPairGenerator.generateKeyPair() } // Guardar una clave en un archivo fun saveKeyToFile(key: Key, fileName: String) { val keyBytes = key.encoded Files.write(Paths.get(fileName), keyBytes) println("Clave guardada en el archivo: $fileName") } // Cargar una clave pública desde un archivo fun loadPublicKeyFromFile(fileName: String): PublicKey { val keyBytes = Files.readAllBytes(Paths.get(fileName)) val keySpec = X509EncodedKeySpec(keyBytes) val keyFactory = KeyFactory.getInstance("RSA") return keyFactory.generatePublic(keySpec) } // Cargar una clave privada desde un archivo fun loadPrivateKeyFromFile(fileName: String): PrivateKey { val keyBytes = Files.readAllBytes(Paths.get(fileName)) val keySpec = PKCS8EncodedKeySpec(keyBytes) val keyFactory = KeyFactory.getInstance("RSA") return keyFactory.generatePrivate(keySpec) } |