자바 AES 예제 샘플Java2017. 11. 6. 12:53
Table of Contents
반응형
자바 AES 샘플 예제 입니다.
encrypt(String message)
decrypt(String encrypted)
위의 함수를 호출 하기만 하면 되어서 사용법은 쉽습니다. key 값은 암호화에 필요한 키이니 적절하게 변경 하시면 됩니다.
AesUtil au = new AesUtil();
au.encrypt("test암호문");
au.decrypt("adndsfosdfsdf복호화");
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.lang.StringUtils;
public class AesUtil {
public static String key = "0927454521097845";
/**
* 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 {
// KeyGenerator kgen = KeyGenerator.getInstance("AES");
// kgen.init(128);
// use key coss2
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(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 {
// KeyGenerator kgen = KeyGenerator.getInstance("AES");
// kgen.init(128);
// use key coss2
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] original = cipher.doFinal(hexToByteArray(encrypted));
return new String(original);
}
}
반응형
@위피M :: ChatGPT로 여는 새로운 세상!!
ChatGPT, 블록체인, 자바, 맥북, 인터넷, 컴퓨터 정보를 공유합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!