본문 바로가기

프로그래밍/JAVA

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 );



'프로그래밍 > JAVA' 카테고리의 다른 글

힙 덤프 명령  (0) 2017.02.23
jni 관련~  (2) 2014.04.16
[OSGi] 서비스 등록 및 해제  (0) 2014.03.21
[eclipse] eclipse 4 platform  (0) 2014.03.17
Annotation  (0) 2014.03.15
[swt] 이벤트  (0) 2014.03.14
[eclipse] Extention Points  (0) 2014.03.14
[eclipse] simple plug-in example  (0) 2014.03.13
Apache HttpClient 관련 정리  (0) 2014.03.11
[JAVA TV] MHP 배경이미지 처리  (0) 2013.12.27