티스토리 뷰

 

JWT payload (claims, body) 부 암호화 및 복호화 방법

JWT를 사용하는것 자체가 암호화된 json 문자열로 전송을 하는건데 무슨 암호화 및 복호화를 또 하느냐!? 암호화가 된다 하더라도 jwt.io 에서 알고리즘만 알고 있다면 다시 복호화된 값으로 볼수

oingdaddy.tistory.com

위에 나온것처럼 AES를 사용해서 암호화를 했는데 Invalid AES key length 오류가 발생하는 경우가 있다. 이것은 정말 명확한 오류 메세지이다. 글자수가 잘못되었다는 것이다. 

AES 암호화를 하는데 사용되는 Key16, 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 로 정의를 해야 한다. 

글자수만 정확히 지킨다면 오류는 사라진다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
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