import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AES128 {
public static String key = "AAAAAAAAAAAAAAAA";
public static void main(String[] args) {
String message = "ABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTU";
AES128 aes128 = new AES128();
try
{
String encrypt = aes128.encrypt(message);
System.out.println("[ORIGIN STR ]= " + message);
System.out.println("[ENCRYPT STR ]= " + encrypt);
String decrypt = aes128.decrypt(encrypt);
System.out.println("[DECRYPT STR ]= " + decrypt);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public 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;
}
public 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();
}
public String encrypt(String message) throws Exception {
AES128 aes128 = new AES128();
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(message.getBytes());
return aes128.byteArrayToHex(encrypted);
}
public String decrypt(String encrypted) throws Exception {
AES128 aes128 = new AES128();
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] original = cipher.doFinal(aes128.hexToByteArray(encrypted));
String originalString = new String(original);
return originalString;
}
}
/*결과
[ORIGIN STR ]= ABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTU
[ENCRYPT STR ]= 1eb6a5b8559de7cf7936ad108fb1bd2cd323454cfb4097b6bc53e670a51e9067
deaeebd8095ae5a76ebf9797c551bc0ab0ebca77dc7be9dd95452b34e90f845c
[DECRYPT STR ]= ABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTUABCDEFGHIJKLMNOPQRSTU
*/
'java 언어 > Java' 카테고리의 다른 글
C#과 Java비교(Properties ,Variables, Array) (0) | 2021.10.24 |
---|---|
static 함수와 인스턴스 함수의 차이 (0) | 2019.10.29 |
카카오 신입공채 1차 코딩테스트 문제1 비밀지도(자바풀이) (0) | 2019.10.29 |