135 lines
3.0 KiB
Java
135 lines
3.0 KiB
Java
package it.valueteam.securityutility;
|
|
|
|
import java.io.*;
|
|
import java.security.*;
|
|
import java.util.*;
|
|
|
|
/**
|
|
* <p>Title: Utility per la lettura della chiave di cifratura serializzata dal file dove risiede
|
|
* e la memorizza in un keystore protetta da passprase</p>
|
|
*
|
|
* <p>Description: </p>
|
|
*
|
|
* <p>Copyright: Copyright (c) 2006</p>
|
|
*
|
|
* <p>Company: ValueTeam</p>
|
|
*
|
|
* @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;
|
|
}
|
|
|
|
|
|
}
|