· 7 years ago · Jan 26, 2019, 05:06 PM
1package chela.spring.core;
2
3import javax.crypto.Cipher;
4import javax.crypto.spec.IvParameterSpec;
5import javax.crypto.spec.SecretKeySpec;
6import java.util.Base64;
7
8final public class ChCrypto {
9 final static Base64.Encoder encorder = Base64.getEncoder();
10 final static Base64.Decoder decorder = Base64.getDecoder();
11 static private Cipher cipher(int opmode, String secretKey) throws Exception{
12 if(secretKey.length() != 32) throw new RuntimeException("SecretKey length is not 32 chars");
13 Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
14 SecretKeySpec sk = new SecretKeySpec(secretKey.getBytes(), "AES");
15 IvParameterSpec iv = new IvParameterSpec(secretKey.substring(0, 16).getBytes()); //0~16ì€ ì„œë²„ì™€ í•©ì˜!
16 c.init(opmode, sk, iv);
17 return c;
18 }
19 static public String encrypt(String str, String secretKey){
20 try{
21 byte[] encrypted = cipher(Cipher.ENCRYPT_MODE, secretKey).doFinal(str.getBytes("UTF-8"));
22 return new String(encorder.encode(encrypted));
23 }catch(Exception e){
24 return null;
25 }
26 }
27 static public String decrypt(String str, String secretKey){
28 try{
29 byte[] byteStr = decorder.decode(str.getBytes());
30 return new String(cipher(Cipher.DECRYPT_MODE, secretKey).doFinal(byteStr),"UTF-8");
31 }catch(Exception e){
32 return null;
33 }
34 }
35}