일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- React
- spring boot
- Next.js 14
- java9
- CentOS6
- java8
- jvm
- 도커
- swagger
- 리눅스
- custom valid
- 초기 세팅
- dto valid
- header setting
- ollama langflow
- generate entity
- JPA
- 초기 구축
- 헤더 설정
- NextJS
- MySQL
- jpa entity자동
- docker
- SpringBoot
- docker 설치
- JavaScript
- Java
- generate pojos
- memcached
- spring
- Today
- Total
개발자의 길
[java] AES 암호화,복호화 본문
static String aesKey = "ZCXVsfda2F"; //이건 내 맘대로 랜덤
/**
* hex to byte[] : 16진수 문자열을 바이트 배열로 변환한다.
*
* @param hex hex string
* @return
*/
public static byte[] hexToByteArray(String hex) {
if (hex == null || hex.length() == 0) {
return null;
}
byte[] ba = new byte[hex.length() / 2];
for (int i = 0; i < ba.length; i++) {
ba[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);
}
return ba;
}
/**
* byte[] to hex : unsigned byte(바이트) 배열을 16진수 문자열로 바꾼다.
*
* @param ba byte[]
* @return
*/
public static String byteArrayToHex(byte[] ba) {
if (ba == null || ba.length == 0) {
return null;
}
StringBuffer sb = new StringBuffer(ba.length * 2);
String hexNumber;
for (int x = 0; x < ba.length; x++) {
hexNumber = "0" + Integer.toHexString(0xff & ba[x]);
sb.append(hexNumber.substring(hexNumber.length() - 2));
}
return sb.toString();
}
/**
* AES 방식의 암호화
*
* @param message
* @return
* @throws Exception
*/
public static String encrypt(String message) throws Exception {
// use key coss2
javax.crypto.spec.SecretKeySpec skeySpec = new javax.crypto.spec.SecretKeySpec(aesKey.getBytes(), "AES");
// Instantiate the cipher
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES");
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(message.getBytes());
return byteArrayToHex(encrypted);
}
/**
* AES 방식의 복호화
*
* @param message
* @return
* @throws Exception
*/
public static String decrypt(String encrypted) throws Exception {
// use key coss2
javax.crypto.spec.SecretKeySpec skeySpec = new javax.crypto.spec.SecretKeySpec(aesKey.getBytes(), "AES");
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES");
cipher.init(javax.crypto.Cipher.DECRYPT_MODE, skeySpec);
byte[] original = cipher.doFinal(hexToByteArray(encrypted));
String originalString = new String(original);
return originalString;
}
'4. JAVA' 카테고리의 다른 글
[java date] 자바 날짜 시간 계산 예제 (1) | 2017.02.10 |
---|---|
[java] 파일 내용 뒤에서 읽기- 원하는 위치에서 (1) | 2017.02.09 |
[java] csv 파일 콤마 자르기 - 배열 (0) | 2016.04.19 |
[java] 오늘기준 월요일,일요일 구하기, 주 차 구하기, 년월 주 차 받아서 해당 주 월,일요일 구하기 (0) | 2016.04.19 |
[java] 해당 월에 각 주의 시작일과 끝일 구하기 (1) | 2015.07.01 |
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.