티스토리 뷰
위에 나온것처럼 AES를 사용해서 암호화를 했는데 Invalid AES key length 오류가 발생하는 경우가 있다. 이것은 정말 명확한 오류 메세지이다. 글자수가 잘못되었다는 것이다.
AES 암호화를 하는데 사용되는 Key는 16, 24, 32 byte 여야 한다.
public class Aes256Util {
final static String secretKey = "oingisprettyintheworld1234567890"; // 32byte
static String IV = ""; // 16byte
... 생략 ...
private Aes256Util() {
IV = secretKey.substring(0, 16);
}
... 생략 ...
byte[] keyData = secretKey.getBytes();
SecretKey secureKey = new SecretKeySpec(keyData, "AES");
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, secureKey, new IvParameterSpec(IV.getBytes()));
Aes256Util 이라는 파일의 내용을 보면 secretKey를 정의하고 이것을 통해 IvParameterSpec에 들어갈 값을 결정한다.
주석으로 표시한대로 secretKey는 꼭 32 byte (영문기준 32글자), IV는 16 byte 로 정의를 해야 한다.
글자수만 정확히 지킨다면 오류는 사라진다.
끝!
'Lang > Java' 카테고리의 다른 글
JAVA OpenJDK Zulu 설치 방법 및 JAVA_HOME 설정 (0) | 2021.04.09 |
---|---|
Java에서 File to MultipartFile , MultipartFile to File 변환하기 (1) | 2021.03.03 |
JWT payload (claims, body) 부 암호화 및 복호화 방법 (0) | 2020.12.23 |
CSV 파일 Univocity Parsers 이용해 간단히 파싱하기 (0) | 2020.10.19 |
Client IP IPv4 형식으로 획득하는 방법 (0) | 2020.06.12 |
댓글