정의
바이너리 데이터를 텍스트 형식으로 인코딩
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