import java.util.Base64;
import javax.crypto.*;
import javax.crypto.spec.*;
public class Security_HW2 {
static String key = "8iE3bf1se6N76HGPP8S0Xw==";
static String iv = "cHml3oX848/0uBwDJtChOA==";
static byte[] decKey = Base64.getDecoder().decode(key); //디코딩된 key
static byte[] decIv = Base64.getDecoder().decode(iv); //디코딩된 iv
public static String decode(String str) throws Exception {
SecretKey secretKey = new SecretKeySpec(decKey, "AES"); //key 만들기
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); //cipher 만들기
cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(decIv)); //초기화
byte[] decoding = Base64.getDecoder().decode(str.getBytes());
return new String(cipher.doFinal(decoding),"UTF-8");
}
public static void main(String[] args) throws Exception{
String cipherText="QDr9NZNG9Bgc3TTnfRuqjjzf/kVSYwbP7F9mR4GQZ/IneIh7HTc/xnwzEeVBcH3pPlIbLFySKZruedJc9X87CGNDJ1f2Dat8BR3Ypbei5Q42xc306/AkSuGsjfqbX9/ELxmdKn7MyvY/Jbc0v0AJHV6odgNzygKRRrFJcUIF/50=";
System.out.println("AES 복호화:"+"\n"+decode(cipherText));
}
}
base64 디코딩한 결과를 문자열로 출력하면 아스키코드로 표현할 수 없는 바이트 같은 경우 제대로 표현이 안될 수 있기 때문에 string형태와 byte형태를 잘 구분해서 코딩을 해야한다.
삽질을 몇시간 했는지,,ㅠㅠ
'Language > Java' 카테고리의 다른 글
[JAVA] 삽입 정렬 (Insertion Sort) (2) | 2022.12.14 |
---|---|
[JAVA] 선택정렬 (Selection Sort) (0) | 2022.12.14 |
[JAVA] 거품 정렬 (Bubble Sort) (0) | 2022.12.09 |
이클립스 No Java virtual machine was found after searching the following locations: 오류 해결 방법 (0) | 2020.09.05 |
RSA decryption (0) | 2020.04.22 |