카테고리 없음

AES-256 설명

끄적잉 2023. 4. 4. 21:47
반응형

AES (Advanced Encryption Standard)은 대칭키 암호화 알고리즘 중 하나로, 128, 192, 256 비트 길이의 키를 사용할 수 있습니다. 이 중에서도 256비트 키를 사용하는 경우, AES-256이라고 합니다.

 

AES-256은 안전하고 강력한 암호화 알고리즘으로, 현재까지까지 최고 수준의 보안을 제공합니다. AES-256 암호화는 블록 암호화 기술을 사용하며, 128비트 블록 크기를 가지고 있습니다. 암호화할 데이터를 128비트씩 나누어 처리하며, 블록 단위로 암호화하고 복호화합니다.

 

Java에서 AES-256을 구현하려면, javax.crypto 패키지에 포함된 Cipher 클래스를 사용합니다. 암호화를 위해서는 우선 암호화할 데이터와 256비트의 키가 필요합니다. 이 키는 랜덤하게 생성할 수 있으며, 보안상의 이유로 키를 저장하는 파일이나 데이터베이스는 암호화해야 합니다.

 

암호화를 수행하려면, Cipher 클래스를 초기화하고 암호화 모드로 설정한 후, generateSecret 메소드를 사용하여 키를 생성합니다. 이후, 암호화할 데이터를 바이트 배열로 변환하고, doFinal 메소드를 사용하여 암호화를 수행합니다. 이때, 암호화된 결과는 바이트 배열로 반환됩니다.

 

복호화를 수행하려면, 암호화할 때와 같이 Cipher 클래스를 초기화하고, 복호화 모드로 설정한 후, generateSecret 메소드를 사용하여 키를 생성합니다. 이후, 암호화된 데이터를 바이트 배열로 변환하고, doFinal 메소드를 사용하여 복호화를 수행합니다. 이때, 복호화된 결과는 바이트 배열로 반환됩니다.

AES-256은 매우 강력한 암호화 알고리즘이지만, 키 관리와 보안에 대한 책임이 매우 큽니다. 따라서, 보안적으로 안전한 키 관리와 암호화 방법을 사용해야 합니다.

 

예시)

 

암호화 : 'plain text  ->  pain bytes  ->  encrypt  ->  encrypted bytes  ->  encrypted base64 test'

복호화 : 'encrypted base64 text  ->  encrypted bytes  ->  decrypt  ->  plain bytes  ->  plain text'

 

AES 암호화에는 아래 네가지가 꼭 필요합니다.

SecretKey,  IV(Initialize Vector),  Cipher Mode(EBC/CBC/...),  Padding Mode(PKCS5/PKCS7/...)

 

Java 기본 라이브러리 (javax.crypto.spec.SecretKeySpec, javax.crypto.spec.IvParameterSpec, javax.crypto.Cihper)

 

 

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

 

 

Cipher 클래스는 암호화, 복호화 기능을 제공하며 JCE famework의 핵심을 구성합니다.

(JCE - Java Cryptography Extension)

 

Cipher 객체를 인스턴스화 하기 위해서는 static getInstance() 메서드를 호출하고 예시와 같이 원하는 변환 형태의 이름을 전달해야 합니다.

("AES/CBC/PKCS5Padding" => AES, CBC operation mode, PKCS5 padding scheme으로 초기화된 Cipher 객체) 

 

출처 : 

https://wildeveloperetrain.tistory.com/98

 

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

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

wildeveloperetrain.tistory.com

 

반응형