자바 AES 암호화, 복호화
Java/Java Note2017. 4. 2. 23:28
아래 암호화 알고리즘은 여러가지 인코딩 방식을 제공해주고 있는 Apache Commons Codec
라이브러리를 사용한다. 이 라이브러리는 게시물 하단에 링크를 걸어두겠다.
암호화 부분
인자값은 순서대로 (암호화할 문자열, 비밀번호 문자열) 이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
public String Encryption(String str, String pw) throws Exception{
byte[] bytes = pw.getBytes();
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(bytes);
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, sr);
SecretKey skey = kgen.generateKey();
SecretKeySpec skeySpec = new SecretKeySpec(skey.getEncoded(), "AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = c.doFinal(str.getBytes());
return Hex.encodeHexString(encrypted);
}
|
cs |
복호화 부분
인자값은 순서대로 (복호화할 문자열, 비밀번호 문자열) 이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
public String Decryption(String str, String pw) throws Exception{
byte[] bytes = pw.getBytes();
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(bytes);
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, sr);
SecretKey skey = kgen.generateKey();
SecretKeySpec skeySpec = new SecretKeySpec(skey.getEncoded(), "AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = c.doFinal(Hex.decodeHex(str.toCharArray()));
return new String(decrypted);
}
|
cs |
실행 결과
하단은 Apache Commons Codec 라이브러리를 배포하고있는 Apache 페이지이다.
Apache Commons Codec
'Java > Java Note' 카테고리의 다른 글
이클립스 폰트 변경하기 (0) | 2017.04.02 |
---|---|
자바 모래시계 알고리즘 (0) | 2017.04.02 |
자바 java.util.ConcurrentModificationException (0) | 2017.04.02 |
이클립스 테마 변경하기 (0) | 2017.04.02 |
이클립스 기본인코딩 변경하기(UTF-8) (0) | 2017.04.01 |