package com.tom.ant; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import org.apache.tools.ant.*; import java.io.*; import java.security.*; import javax.crypto.*; public class Crypto extends Task { private String keyFile; private String inputFile; private String outputFile; private boolean encrypt = true; private String cypherType = "DES/ECB/PKCS5Padding"; public void execute() throws BuildException { Key key; try { ObjectInputStream in = new ObjectInputStream(new FileInputStream(keyFile)); key = (Key)in.readObject(); in.close(); } catch (Exception e) { throw new BuildException("Unable to find key", e); } Cipher cipher = null; try { cipher = Cipher.getInstance(cypherType); if (encrypt) cipher.init(Cipher.ENCRYPT_MODE, key); else cipher.init(Cipher.DECRYPT_MODE, key); } catch (Exception e) { throw new BuildException("Problem with cipher", e); } try { FileInputStream in = new FileInputStream(inputFile); FileOutputStream fileout = new FileOutputStream(outputFile); CipherOutputStream out = new CipherOutputStream(fileout, cipher); byte[] buffer = new byte[8192]; int length; while ((length = in.read(buffer)) != -1) out.write(buffer,0,length); in.close(); out.close(); } catch (Exception e) { throw new BuildException("I/O Problems", e); } } public void setKeyFile(String keyFile) { this.keyFile = keyFile; } public void setInputFile(String inputFile) { this.inputFile = inputFile; } public void setOutputFile(String outputFile) { this.outputFile = outputFile; } public void setEncrypt(String encrypt) { this.encrypt = Project.toBoolean(encrypt); } public void setCypherType(String cypherType) { this.cypherType = cypherType; } }