Java

Java - base64 인코딩, 디코딩하기

codeManager 2022. 7. 14. 18:57
반응형

java.util.Base64 클래스를 사용하면 base64로 인코딩, 디코딩을 쉽게 할 수 있습니다.

 

 

1. Base64 encoding 예제

"test" 라는 스트링을 base64로 인코딩하는 예제입니다.

import java.util.Base64;

class Base64Test {
    public static void main(String[] args) {
        String str = "test";
        String encodedStr = Base64.getEncoder().encodeToString(str.getBytes());

        System.out.println("encoded string: " + encodedStr);
    }
}

 

결과

encoded string: dGVzdA==

 

 

2. Base64 decoding 예제

1예제에서 인코딩한 스트링을 다시 디코딩하는 예제입니다.

import java.util.Base64;

class Base64Test {
    public static void main(String[] args) {
        String encodedStr = "dGVzdA==";
        byte[] decodedBytes = Base64.getDecoder().decode(encodedStr);
        String decodedStr = new String(decodedBytes);
        
        System.out.println("decoded string: " + decodedStr);
    }
}

 

결과

decoded string: test

 

3. Base64 URL encoding

java.util.Base64에서는 URL safe한 인코딩도 제공합니다.

URL에서 사용되는 +, / 문자를 -, _로 치환시키는 방식으로 URL safe한 인코딩을 제공합니다.

import java.util.Base64;

class Base64Url {
    public static void main(String[] args) {
        String url = "https://codemanager.tistory.com/36";
        String encoded = Base64.getUrlEncoder().encodeToString(url.getBytes());

        System.out.println("encoded url: " + encoded);
    }
}

 

결과

encoded url: aHR0cHM6Ly9jb2RlbWFuYWdlci50aXN0b3J5LmNvbS8zNg==

 

 

4. Base64 URL decoding

import java.util.Base64;

class Base64Url {
    public static void main(String[] args) {
        String encodedUrl = "aHR0cHM6Ly9jb2RlbWFuYWdlci50aXN0b3J5LmNvbS8zNg==";
        byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrl);
        String decodedStr = new String(decodedBytes);
        
        System.out.println("decoded string: " + decodedStr);
    }
}

 

결과

decoded string: https://codemanager.tistory.com/36

 

5. Base64 padding 없이 인코딩하기

Base64 인코딩은 인코딩된 문자열의 길이가 3의 배수가 아닌 경우 기본적으로 인코딩된 바이트 데이터 끝에 패딩문자(=)를 추가합니다.

패딩 문자를 빼고 인코딩된 출력값을 얻는 예제입니다.

 

이 출력 결과는 다시 디코딩할 수 없습니다.

import java.util.Base64;

class Base64Test {
    public static void main(String[] args) {
        String str = "test";
        String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());

        System.out.println("encoded string: " + encodedStr);
    }
}

 

결과

encoded string: dGVzdA

 

 

참고. byte를 string으로 변환하는 법

Java - byte[]를 String으로 변환

 

Java - byte[]를 String으로 변환

자바에서 String을 byte[] 로 변환하여 파일에 저장하거나, 데이터로부터 byte[]를 읽어와서 String으로 변환할 수 있습니다. 1. String to byte[], byte[] to String class BytesToString { public static void m..

codemanager.tistory.com

 

반응형