package it.valueteam.securityutility; import java.io.*; import java.security.*; import java.util.*; /** *

Title: Utility per la lettura della chiave di cifratura serializzata dal file dove risiede * e la memorizza in un keystore protetta da passprase

* *

Description:

* *

Copyright: Copyright (c) 2006

* *

Company: ValueTeam

* * @author Mario Giurlanda * * @version 1.0 */ public class TripleDesKeyCipher { public TripleDesKeyCipher() { } public static void main(String[] args) { Key encryptionKey = null; boolean backup=false; //Recupero degli eventuali args if( args.length == 0 ) backup = false; else if ( args[0].equalsIgnoreCase("-b") ) backup = true; else { System.out.println("Sintassi: TripleDesKeyCipher [-b] "); System.out.println(" -b Backup dei file"); System.exit(1); } //Load delle property Properties p = TripleDesKeyGenerator.initProperties(); String filekey = (String)p.get("PATH_KEY"); try { File file = new File(filekey); //Controllo sull'esistenza del file System.out.println("Leggo il file" + file); if (file.exists()) { encryptionKey = loadTripleDesKey(file); //Se richiesto backup provo ad eseguirlo altrimenti termino esecuzione con messaggio di errore if (backup) { System.out.println("Backup del file " + file); if (backupFile(file)) { System.out.println("Backup eseguito con successo"); } else { System.out.println("Impossibile eseguire il backup del file"); System.exit(1); } } //Generazione del keystore System.out.println("Genero il file: " + filekey); TripleDesKeyGenerator.storeTripleDesKey(file, encryptionKey, true); System.out.println("File generato con successo."); } else System.out.println("Impossibile cifrare la chiave, file non presente."); } catch (Exception ex) { ex.printStackTrace(); } } /** * loadTripleDesKey * * @return Key */ private static Key loadTripleDesKey(File fileChiave) throws Exception { ObjectInputStream in = null; Key chiave3DES = null; try { in = new ObjectInputStream(new FileInputStream(fileChiave)); chiave3DES = (Key)in.readObject(); } catch (Exception e) { System.out.println("Impossibile caricare la chiave dal file " + fileChiave); e.printStackTrace(); throw e; } finally { if(in!=null) { try { in.close(); } catch (IOException ex) { ex.printStackTrace(); } } } return chiave3DES; } private static boolean backupFile(File oldFile){ File newFile = null; boolean ret; try{ newFile = new File(oldFile.getAbsolutePath() + ".bak"); ret = oldFile.renameTo(newFile); ret = true; } catch(Exception e){ e.printStackTrace(); ret = false; } return ret; } }