- backend 프로젝트에 aes256 class파일 추가
package com.common;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class AES256 {
public static String alg = "AES/CBC/PKCS5Padding";
private final String key = "01234567890123456789012345678901";
private final String iv = key.substring(0, 16); // 16byte
public String encrypt(String text) throws Exception {
Cipher cipher = Cipher.getInstance(alg);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivParamSpec);
byte[] encrypted = cipher.doFinal(text.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encrypted);
}
public String decrypt(String cipherText) throws Exception {
Cipher cipher = Cipher.getInstance(alg);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivParamSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParamSpec);
byte[] decodedBytes = Base64.getDecoder().decode(cipherText);
byte[] decrypted = cipher.doFinal(decodedBytes);
return new String(decrypted, "UTF-8");
}
}
2. service 파일에 암호화 / 복호화 구문 추가
>>> 암호화(SHA256은 복호화할 필요없는 데이터에 적용, AES256은 복호화할 데이터에 적용)
// 사용자 등록 처리
@Override
public int userReg(UserVO user) throws Exception {
log.info("reguser : {}", user);
SHA256 sha256 = new SHA256();
AES256 aes256 = new AES256();
user.setUserPw(sha256.encrypt(user.getUserPw()));
user.setUserPhone(aes256.encrypt(user.getUserPhone()));
return userMapper.userReg(user);
}
>>> 복호화
// 사용자 정보 페이지 조회
@Override
public List<UserVO> getUserInfo(String userId) throws Exception {
AES256 aes256 = new AES256();
List<UserVO> info = userMapper.getUserInfo(userId);
for(int i = 0 ; i<info.size() ; i++){
info.get(i).setUserPhone(aes256.decrypt(info.get(i).getUserPhone()));
}
return info;
}
>>> 이후 결과확인!!
>>> controller, service, mapper 파일에 경고가 출력될 경우 경고 코드를 읽고 알맞은 exception 추가하여 해결
'JAVA' 카테고리의 다른 글
데이터 암호화(SHA256) (0) | 2023.05.16 |
---|---|
el, jstl (0) | 2023.05.15 |
Java-Jsp Driver로딩 및 DTO Bean (0) | 2023.05.15 |
Jsp-Java JDBC 연결 (0) | 2023.05.09 |
매서드(method), 상속, final (0) | 2023.04.17 |