-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGenerarClaves.java
60 lines (48 loc) · 1.86 KB
/
GenerarClaves.java
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
54
55
56
57
58
59
60
import java.io.*;
import java.security.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
// Necesario para usar el provider Bouncy Castle (BC)
// Para compilar incluir el fichero JAR en el classpath
/**
*
* @author ribadas
*/
public class GenerarClaves {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
mensajeAyuda();
System.exit(1);
}
// Anadir provider (el provider por defecto no soporta RSA)
Security.addProvider(new BouncyCastleProvider()); // Cargar el provider BC
/*** Crear claves RSA 512 bits */
KeyPairGenerator generadorRSA = KeyPairGenerator.getInstance("RSA", "BC"); // Hace uso del provider BC
generadorRSA.initialize(512);
KeyPair clavesRSA = generadorRSA.generateKeyPair();
PrivateKey clavePrivada = clavesRSA.getPrivate();
PublicKey clavePublica = clavesRSA.getPublic();
/*** 1 Volcar clave privada a fichero */
// 1.1 Recuperar de la clave su codificación en formato PKS8 (necesario para
// escribirla a disco)
byte[] encodedPKCS8 = clavePrivada.getEncoded();
// 1.2 Escribirla a fichero binario
FileOutputStream out = new FileOutputStream(args[0] + ".privada");
out.write(encodedPKCS8);
out.close();
/*** 3 Volcar clave publica a fichero */
// 3.1 Recuperar de la clave su codificación en formato X509 (necesario para
// escribirla a disco)
byte[] encodedX509 = clavePublica.getEncoded();
// 3.2 Escribirla a fichero binario
out = new FileOutputStream(args[0] + ".publica");
out.write(encodedX509);
out.close();
System.out.println("Generadas claves RSA pública y privada de 512 bits en ficheros " + args[0] + ".publica"
+ " y " + args[0] + ".privada");
}
public static void mensajeAyuda() {
System.out.println("Generador de pares de clave RSA de 512 bits");
System.out.println("\tSintaxis: java GenerarClaves prefijo");
System.out.println();
}
}