[기술정리]Base64

송송승현's avatar
Dec 16, 2024
[기술정리]Base64

정의

💡
바이너리 데이터를 텍스트 형식으로 인코딩
8비트 이진 데이터를 아스키 문자 입합으로 변환하여 텍스트 파일에 저장하거나 전송할 때 손실되지 않도록 해줌
데이터를 6비트 단위로 쪼개어 변환
 

개념

인코딩

  • 바이너리 데이터를 6비트 그룹으로 나눠 아스키 문자로 변환, 데이터를 텍스트 형식르로 변환시켜 전송과정에서의 손실을 방지
  • 예제
    • import java.util.Base64; public class Base64Example { public static void main(String[] args) { // 문자열을 Base64로 인코딩 String originalInput = "Hello, World!"; String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes()); System.out.println("Encoded String: " + encodedString); }

디코딩

  • Base64로 인코딩된 텍스트 데이터를 다시 원래의 바이너리 데이터로 변환
  • 예제
    • import java.util.Base64; public class Base64Example { public static void main(String[] args) { // Base64 문자열을 디코딩 byte[] decodedBytes = Base64.getDecoder().decode(encodedString); String decodedString = new String(decodedBytes); System.out.println("Decoded String: " + decodedString); } }

인코딩 과정

  • 입력 데이터를 3바이트씩 그룹화
  • 3바이트를 6비트씩 4개의 그룹으로
    • 입력 데이터를 6비트 그룹으로 나누어 각 그룹을 0~63사이의 숫자로 변환
  • 각 6비트 그룹은 Base64문자 집합의 인덱스에 매핑
    • 각 숫자를 아스키 문자 집합에 매핑
  • 남는 비트는 = 패딩 문자를 사용하여 채움
    • 패딩 : 입력 데이터의 길이가 3의 배수가 아닌경우 ‘=’문자를 사용하여 길이 조절

장점

  • 바이너리 데이터를 텍스트 형식으로 안전하게 전송
  • 다양한 시스템 간의 호환성이 높다

단점

  • 인코딩된 데이터가 원본 데이터보다 33% 더 크다
  • 인간이 읽기 어려움
 
 
Share article

송승현의 블로그