목차
접기
728x90
반응형
//알고리즘
String alg = "AES/CBC/PKCS5Padding";
//키
String aesKey = "abcdefghabcdefghabcdefghabcdefgh"; //32byte
String aesIv = "0123456789abcdef"; //16byte
//암호화 할 유저 아이디
String userId ="abc123";
//암호화된 유저 아이디
String encId="";
//알고리즘 aes-256 **********[암호화]**********
try {
Cipher cipher = Cipher.getInstance(alg);
//키로 비밀키 생성
SecretKeySpec keySpec = new SecretKeySpec(aesKey.getBytes(), "AES");
//iv 로 spec 생성
IvParameterSpec ivParamSpec = new IvParameterSpec(aesIv.getBytes());
//암호화 적용
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivParamSpec);
//암호화 실행
byte[] encrypted1 = cipher.doFinal(userId.getBytes("UTF-8")); // ID 암호화(인코딩 설정)
encId = Base64.getEncoder().encodeToString(encrypted1); // 암호화 인코딩 후 저장
System.out.println("암호화된 유저 아이디 -> " + encId);
}catch (Exception e) {
System.out.println("암호화 중 오류 발생 ");
e.printStackTrace();
}
//---------------------------------------------------------------------------
//----암호화 해석 코드 **********[복호화]**********
try {
Cipher cipher = Cipher.getInstance(alg);
SecretKeySpec keySpec = new SecretKeySpec(aesKey.getBytes(), "AES");
IvParameterSpec ivParamSpec = new IvParameterSpec(aesIv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivParamSpec);
//암호 해석
byte[] decodedBytes = Base64.getDecoder().decode(encId);
byte[] decrypted = cipher.doFinal(decodedBytes);
String result = new String(decrypted);
System.out.println("복호화한 유저 아이디 -> " + result);
}catch (Exception e) {
e.printStackTrace();
}
//---------------------------------------------------------------------------
728x90
반응형
LIST
'Java' 카테고리의 다른 글
outside of an actual web request, or processing a request outside of the originally receiving thread? 오류에 대한 해결책. (0) | 2022.07.06 |
---|---|
이클립스에서 local history 찾는 방법 (0) | 2022.06.22 |
오늘 날짜, 오늘 지금으로부터 24시간(하루전) 날짜 구하기 (0) | 2022.06.10 |
[ sts ] select type, matching item 해결 (1) | 2022.06.03 |
InetAddress 설명 (0) | 2022.03.07 |