/* * Created on * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package com.csc.library.security; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.OutputStream; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import com.csc.library.utilities.MyLog; /** * @author Administrator * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class EncryptText { Cipher ecipher; Cipher dcipher; public EncryptText(SecretKey key) { // Create an 8-byte initialization vector byte[] iv = new byte[]{ (byte)0x8E, 0x12, 0x39, (byte)0x9C, 0x07, 0x72, 0x6F, 0x5A }; AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv); try { ecipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); dcipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); // CBC requires an initialization vector ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec); dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec); } catch (java.security.InvalidAlgorithmParameterException e) { MyLog.error(this, e); } catch (javax.crypto.NoSuchPaddingException e) { MyLog.error(this, e); } catch (java.security.NoSuchAlgorithmException e) { MyLog.error(this, e); } catch (java.security.InvalidKeyException e) { MyLog.error(this, e); } } // Buffer used to transport the bytes from one stream to another byte[] buf = new byte[1024]; public void encrypt(InputStream in, OutputStream out) { try { // Bytes written to out will be encrypted out = new CipherOutputStream(out, ecipher); // Read in the cleartext bytes and write to out to encrypt int numRead = 0; while ((numRead = in.read(buf)) >= 0) { out.write(buf, 0, numRead); } out.close(); } catch (java.io.IOException e) { MyLog.error(this, e); } } public void decrypt(InputStream in, OutputStream out) { try { // Bytes read from in will be decrypted in = new CipherInputStream(in, dcipher); // Read in the decrypted bytes and write the cleartext to out int numRead = 0; while ((numRead = in.read(buf)) >= 0) { out.write(buf, 0, numRead); } out.close(); } catch (java.io.IOException e) { MyLog.error(this, e); } } public static void main(String args[]){ try { // Generate a temporary key. In practice, you would save this key. // See also e464 Encrypting with DES Using a Pass Phrase. /*SecretKey key = KeyGenerator.getInstance("DES").generateKey(); System.out.println("Algorithm "+key.getAlgorithm()); System.out.println("Format "+key.getFormat()); */ FileInputStream fu=new FileInputStream("C:/myen/TEMPLATE/key.ser"); ObjectInputStream ou=new ObjectInputStream(fu); SecretKey key=(SecretKey)ou.readObject(); ou.close(); // Create encrypter/decrypter class EncryptText encrypter = new EncryptText(key); // Encrypt //encrypter.encrypt(new FileInputStream("C:/myen/TEMPLATE/DB_SECURITY.xml"), // new FileOutputStream("C:/myen/SECURITY/test.txt")); // Decrypt encrypter.decrypt(new FileInputStream("C:/myen/SECURITY/test.txt"), new FileOutputStream("C:/myen/SECURITY/test2.txt")); } catch (Exception e) { e.printStackTrace(); } } }