· 9 years ago · Oct 28, 2016, 05:54 PM
1 public static void main(String[] args) throws NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException, UnrecoverableKeyException
2 {
3
4 Scanner sc = new Scanner(System.in);
5
6 SecretKey clau;
7
8 int midaclau;
9
10 System.out.println("Introdueix la mida de la clau que vols crear: 128|192|256");
11 midaclau = sc.nextInt();
12
13 //1. Genera clau a través de la funcio keygenKeyGeneration
14
15 clau = keygenKeyGeneration(midaclau);
16
17 String claudesencriptada = Base64.getEncoder().encodeToString(clau.getEncoded());
18
19 //2. Mostrar la clau Generada
20
21 System.out.println("La clau generada és: "+claudesencriptada);
22
23 String filePassword = "123456"; //Contrasenya accedir fitxer
24
25 String alias = "clau1"; //alias clau
26
27 String keyPassword = "1234"; //Contrasenya per accedir a la clau
28
29 File file = new File("keystore.keystore"); //nom del fitxer
30
31 KeyStore keyStore = KeyStore.getInstance("JCEKS"); //Es crea el keystore
32
33 // Si el keystore existex, es recupera el que hi ha, si no se'n crea un de temporal
34
35 if (file.exists())
36 {
37 keyStore.load(new FileInputStream(file), filePassword.toCharArray());
38 }
39 else
40 {
41 keyStore.load(null, null);
42 }
43
44 //3. Guarda la clau al keystore de tipus JCEKS
45
46 // Guardar la clau com una nova Entry del KeyStore
47 keyStore.setKeyEntry(alias, clau, keyPassword.toCharArray(), null);
48
49 // Guardar el keyStore al fitxer
50 keyStore.store(new FileOutputStream(file), filePassword.toCharArray());
51
52 //4. Recuperi la clau del keystore mitjançant l'alies
53
54
55 keyStore.load(new FileInputStream(file), filePassword.toCharArray());
56
57 SecretKey claurecuperada = (SecretKey) keyStore.getKey(alias, keyPassword.toCharArray());
58
59 //5. Mostrar la clau recuperada del Keystore
60
61 String claurecuperadastring = Base64.getEncoder().encodeToString(claurecuperada.getEncoded());
62
63 System.out.println("La clau recuperada del Keystore és: "+claurecuperadastring);
64
65 sc.close();
66 }
67
68 public static SecretKey keygenKeyGeneration(int keySize) throws NoSuchAlgorithmException {
69 SecretKey sKey = null;
70 if ((keySize == 128)||(keySize == 192)||(keySize == 256))
71 {
72
73 KeyGenerator kgen = KeyGenerator.getInstance("AES");
74 kgen.init(keySize);
75 sKey = kgen.generateKey();
76 return sKey;
77 }
78 else
79 {
80 System.out.println("No has introduit una clau correcte");
81 }
82
83 return null;
84
85 }
86}