본문 바로가기
Language/Java

[Java] AES-256 암호화/복호화 하기

by 애기 개발자 2023. 6. 15.
반응형

AES

AES는 고급 암호화 표준으로 

 

같은 Key를 이용하여 암호화/복호화가 가능한 암호화 알고리즘이다.

 

256은 32바이트의 암호화키를 사용하며

 

AES-128(16byte), 192(24byte), 256(32byte)의 세 종류가 있으며 256에 대해 알아보자.

 

Secret Key

Secret Key는 약속된 특정만 문장을 암호화 하는데 사용되며 보안을 위해 외부노출을 삼가야 한다.

AES의 종류에 따라 Secret Key의 길이가 달라지며 256은 32바이트의 길이를 사용한다.

 

Initialize Vector (초기화 벡터)

암호화를 하기 위한 키를 16byte의 길이로 잘라서 사용하는 벡터로

위의 Secret Key값을 잘라서 사용할 수 있다.

 

암호화 예시

public String encrypt(String text) throws Exception {
	String alg = "AES/CBC/PKCS5Padding"; //AES를사용하기위한 선언
	String key = "something_to_change_anything_key"; //사전에 약속된 암호화 키
	String iv = key.substring(0, 16); //초기화 벡터 16byte로 자르기
	
	Cipher cipher = Cipher.getInstance(alg);
	SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES"); //key로 Secret Key생성
	IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes()); //초기화 백터
	cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivParamSpec);
	
	byte[] encrypted = cipher.doFinal(text.getBytes("UTF-8"));
	return Base64.getEncoder().encodeToString(encrypted);
}

 

복호화 예시

public String decrypt(String cipherText) throws Exception {
	String alg = "AES/CBC/PKCS5Padding";
	String key = "something_to_change_anything_key";
	String iv = key.substring(0, 16);
	
	Cipher cipher = Cipher.getInstance(alg);
	SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
	IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
	cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParamSpec);
	
	byte[] decodeBytes = Base64.getDecoder().decode(cipherText);
	byte[] devrypted = cipher.doFinal(decodeBytes);
	return new String(devrypted, "UTF-8");
}

 

 

참고

https://wildeveloperetrain.tistory.com/98

 

Java AES-256 양방향 암호화 제대로 알고 사용하기

'Java 양방향 암호화 AES-256 제대로 알고 사용하기' /* 프로젝트에서 양방향 암호화를 하기 위해서 AES-256 코드를 구글링 하여 사용하였는데, 나중에 알고 보니 사용하던 것이 AES-256이 아닌 AES-128인

wildeveloperetrain.tistory.com

https://bamdule.tistory.com/234

 

[JAVA] AES-256 암호화 하기

1. AES 란? AES는 고급 암호화 표준이라는 의미이며, 암호화 및 복호화 시 동일한 키를 사용하는 대칭키 알고리즘입니다. AES의 종류는 AES-128, AES-192, AES-256이 있고 각각 뒤에 붙은 숫자가 키의 길이

bamdule.tistory.com

 

반응형

댓글