대략 짠 코드
실제 시험은 안해봤습니다 ^^
package pe.kr.realizm.blowfishcrypto; import java.io.FileInputStream; import java.io.FileOutputStream; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class BlowfishCrypto { private final static byte[] RAW_KEY = { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x0a, (byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e, (byte) 0x0f, (byte) 0x10 }; private final static byte[] RAW_IV = { (byte) 0x11, (byte) 0x22, (byte) 0x33, (byte) 0x44, (byte) 0x55, (byte) 0x66, (byte) 0x77, (byte) 0x88 } private final static Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding"); private final static SecretKeySpec cipherKey = new SecretKeySpec(BlowfishCrypto.RAW_KEY, "Blowfish"); private final static IvParameterSpec iv = new IvParameterSpec(BlowfishCrypto.RAW_IV); public void decode(String srcFilePath, String destFilePath) throws Exception{ byte[] bytes = decode(srcFilePath); writeToFile(destFilePath, bytes); } public byte[] decode(String srcFilePath) throws Exception{ byte[] bytes = BlowfishCrypto.readFromFile(srcFilePath); return decode(bytes); } public byte[] decode(byte[] bytes) throws Exception{ cipher.init(Cipher.DECRYPT_MODE, cipherKey, iv); return cipher.doFinal(bytes); } public void encode(String srcFilePath, String destFilePath) throws Exception{ byte[] bytes = encode(srcFilePath); writeToFile(destFilePath, bytes); } public byte[] encode(String srcFilePath) throws Exception{ byte[] bytes = BlowfishCrypto.readFromFile(srcFilePath); return encode(bytes); } public byte[] encode(byte[] bytes) throws Exception{ cipher.init(Cipher.ENCRYPT_MODE, cipherKey, iv); return cipher.doFinal(bytes); } private byte[] readFromFile(String path) throws Exception{ byte[] bytes = null; FileInputStream fis = null; try { fis = new FileInputStream(path); fis.read(bytes); } catch (Exception ex) { throw ex; } finally { if (fis != null) { fis.close(); } } return bytes; } private void writeToFile(String path, byte[] bytes) throws Exception { FileOutputStream fos = null; try { fos = new FileOutputStream(path); fos.write(bytes); } catch (Exception ex) { throw ex; } finally { if(fos != null) { fos.close(); } } } }