AES 암호화
키생성
// 128, 196, 256 등 비트수에 맞게 패스워드 키 정의
String keyString = "1234567890123456";
SecretKeySpec key = new SecretKeySpec( keyString.getBytes(), "AES");
운용모드 ( 상세한 설명은 요기로 : http://blog.kangwoo.kr/13 )
ECB : 일정한 블록을 동일한 키로 암호화
CBC : 이전 암호블록과 현재 블록을 XOR, 첫 블록은 이전블록이 없으므로 IV와 XOR.
PCBC : 이전 원본 블록과 현재 블록을 XOR, 첫 블록은 CBC와 동일.
CFB : IV를 암호화한뒤 원본 블록과 XOR하고, XOR된 블록이 다음 블록으로 전달.
OFB : IV가 암호화되어 블록과 XOR하고, 암호화된 IV값만 다음 블록으로 전달되어 다시 암호화.
CTR : IV와 카운터 값을 사용해 암호화하고 블록을 XOR한값. 각 블록은 카운터만 변경됨.
String iv = "1234567890123456";
IvParameterSpec param = new IvParameterSpec( iv.getBytes() );
암호
byte[] buffer = 내 데이터;
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding" );
cipher.init( Cipher.ENCRYPT_MODE, key, param );
byte[] encripted = cipher.doFinal( buffer );
복호
cipher.init( Cipher.DECRYPT_MODE, key, param );
byte[] decripted = cipher.doFinal( encripted );