티거의 개발 공간

아래 암호화 알고리즘은 여러가지 인코딩 방식을 제공해주고 있는 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 페이지이다.