/* * KeyHandler.java * Karl-Adam Karlsson * 06-10-04 * * KeyHandler, skapar en private key på 448bitar * som skall användas med Blowfish. * Sparar som fil med namn args[0] * */ import javax.crypto.*; import java.security.*; import java.io.*; public class KeyHandler{ /* * Konstruktor * Gör anrop för att skapa och spara nyckeln. * Som du ser är INTE keysize 448, * eftersom storleken uppenbarligen begränsas av policies * * se: http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/Cipher.html#init(int, java.security.Key) * En keysize på 448 och 256 genererade ett exception vid kryptering. * Medan 128 tycks fungera. */ public KeyHandler(String fileName){ saveKey(fileName, genKey(128)); }//end of constructor /* * genKey generates and returns a secret key * of desired Size. * * @param int keysize the desired size of the key * @returns SecretKey of size keysize * */ private SecretKey genKey(int keysize){ KeyGenerator aGenerator = null; String algorithm = "Blowfish"; try{ aGenerator = KeyGenerator.getInstance(algorithm); aGenerator.init(keysize); }catch(NoSuchAlgorithmException alEx){ System.err.print(alEx); System.exit(1); } return aGenerator.generateKey(); }//end of genKey /* * SaveKey saves a SecretKey to file. * Both key to be saved and filename are parameters. * * @param String fileName The file to save to. * @param SecretKey aKey The key to be saved. * */ private void saveKey(String fileName, SecretKey aKey){ File outFile = new File(fileName); FileOutputStream outStream; ObjectOutputStream oStream; try{ outStream = new FileOutputStream(outFile); oStream = new ObjectOutputStream(outStream); oStream.writeObject(aKey); oStream.close(); outStream.close(); } catch(IOException e) { System.err.println("IO Exception"); e.printStackTrace(); System.exit(1); } }//endof saveKey /* * main * */ public static void main (String[] args) { if(args==null || args.length < 1 ||args.length>1){ System.out.print("Usage:\njava KeyHandler \n"); System.out.println("Where is desired name of keyfile."); } else if(args.length==1&&args[0]!=null){ new KeyHandler(args[0]); } else if(args[0]==null){ System.out.println("Null is not a valid argument."); System.out.print("Usage:\njava KeyHandler \n"); System.out.println("Where is desired name of keyfile."); } }//end of main }//End of Class