구글링으로 관련된 정보를 찾아보니 많이 나왔다.
이 중 나에게 필요한 것만 다시 추출하여 만들어보았다.
패딩 및 모드 : http://acaasia.blogspot.kr/2013/07/padding-mode.html
Base64 인코딩 이유 : 문자깨짐을 막기 위한?
참고) 128bit가 아닌 256bit AES는??
이 중 나에게 필요한 것만 다시 추출하여 만들어보았다.
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * @author 윤성탁 */ public class EncryptionUtils { private static final String AES_CBC_PKCS5 = "AES/CBC/PKCS5Padding"; private static final String AES = "AES"; public static String encode(String text, byte[] key) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(key, AES); Cipher cipher = Cipher.getInstance(AES_CBC_PKCS5); cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(new byte[cipher.getBlockSize()])); byte[] encrypted = cipher.doFinal(text.getBytes("utf-8")); return new String(Base64.encodeBase64(encrypted)); } public static String decode(String encode, byte[] key) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(key, AES); Cipher cipher = Cipher.getInstance(AES_CBC_PKCS5); cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(new byte[cipher.getBlockSize()])); byte[] decodeBytes = cipher.doFinal(Base64.decodeBase64(encode)); return new String(decodeBytes, "utf-8"); } }AES 모드 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Z2do&articleno=2
패딩 및 모드 : http://acaasia.blogspot.kr/2013/07/padding-mode.html
Base64 인코딩 이유 : 문자깨짐을 막기 위한?
참고) 128bit가 아닌 256bit AES는??
- JDK에 맞는 것을 선택하여 JAVA_HOME의 security디렉토리 아래의 파일들을 덮어씌워야한다. - https://dukeom.wordpress.com/2013/01/08/aes256-%EC%95%94%ED%98%B8%ED%99%94-java-%EC%83%98%ED%94%8C/
'Java' 카테고리의 다른 글
모델 클래스에 인터페이스 구현 설계에 대한 내용 (0) | 2016.08.24 |
---|---|
package javax.crypto does not exist (0) | 2016.08.17 |
MySQL과 Java AES 128 암호/복호 동기화하기 (대칭키, 양방향) (0) | 2016.08.11 |
Bit 연산 (0) | 2016.03.21 |
[Jar] jar 파일 내부 리스트 보기 (0) | 2016.01.29 |