package com.urpsys.basebatch; import java.io.InputStream; import java.security.InvalidKeyException; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; /** * Hello world! * */ public class Aes256Test { private static SecretKey keySpec; // keySpec private static IvParameterSpec ivSpec; // ivSpec public static void main( String[] args ) { InputStream fis = null; String secretKey = null; System.out.println( "Hello World!" ); secretKey = "52f48aa1c7435bc11bf909d9d7d1d5932f4bacd8184ec5c1eed6d03ee17fe126"; args = new String[2]; args[0] ="enc"; args[1] ="kicintf12!"; if(args.length !=2 ) { System.out.println("Invalid args , args length 2 input "); System.exit(0); } try { byte[] secretKeyBytes = Hex.decodeHex(secretKey); if (secretKeyBytes.length != 32) { System.out.println("Invalid key (key length is not valid) "); System.exit(0); } byte[] ivBytes = new byte[16]; System.arraycopy(secretKeyBytes, 0, ivBytes, 0, 16); keySpec = new SecretKeySpec(secretKeyBytes, "AES"); ivSpec = new IvParameterSpec(ivBytes); if(args[0].equals("enc")) { System.out.println( "암호로 변경" ); if (args[1] == null) { System.out.println("변경할 문자열이 없습니다."); } String encryptedStr = null; try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); byte[] encrypted = cipher.doFinal(args[1].getBytes("UTF-8")); encryptedStr = new String(Base64.encodeBase64(encrypted)); } catch (Exception ex) { ex.printStackTrace(); } System.out.println( "["+ args[1] +"] 암호화로 변경 =============>"+ encryptedStr); } else if(args[0].equals("dec")) { System.out.println( "평문으로 변경" ); if (args[1] == null) { System.out.println("변경할 문자열이 없습니다."); } String decryptedStr = null; try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); byte[] byteStr = Base64.decodeBase64(args[1].getBytes("UTF-8")); decryptedStr = new String(cipher.doFinal(byteStr), "UTF-8"); } catch (Exception ex) { ex.printStackTrace(); } System.out.println( "["+ args[1] +"] 평문으로 변경 =============>"+ decryptedStr); } } catch(Exception e) { e.printStackTrace(); } } }