Base64 인코딩의 실제 목적은 무엇입니까?


82

Base64 인코딩이있는 이유는 무엇입니까? 나는 초보자이고 왜 바이트를 다른 것으로 난독 화하는 이유를 이해하지 못합니다 (암호화가 아닌 경우). 내가 읽은 책 중 하나에서 Base64 인코딩은 바이너리 전송이 불가능할 때 유용합니다. 예 : 양식을 게시하면 인코딩됩니다. 그런데 왜 바이트를 문자로 변환할까요? 사이에 공백이있는 문자열 형식으로 바이트를 변환 할 수 없습니까? 예를 들어, 00000001 00000004? 아니면 0000000100000004바이트가 항상 8 쌍으로 나오기 때문에 공백이 없습니까?


11
base64에서와 같이 3을 4로 변환하는 대신 1 바이트를 8로 변환했기 때문입니다 (메모리가 제대로 작동한다면). 대역폭은 유한합니다.
Brian Roach

당신은 어떤 종류의 그룹 으로든 올 수있는 비트 (당신이 한 바이트를 만드는 8 비트)와 바이트를 혼동하고있다.
Denys Séguret 2012

답변:


108

Base64는 내용 자체의 손실이나 수정없이 데이터를 전송하기 위해 이진 데이터를 거의 모든 컴퓨터 시스템에 알려진 ASCII 문자 집합으로 인코딩하는 방법입니다. 예를 들어 메일 시스템은 ASCII (텍스트) 데이터를 예상하기 때문에 바이너리 데이터를 처리 할 수 ​​없습니다. 따라서 이미지 또는 다른 파일을 전송하려는 경우 데이터를 처리하는 방식 때문에 손상됩니다.

참고 : base64 인코딩은 데이터를 암호화하거나 압축하는 방법이 아닙니다. 실제로 base64로 인코딩 된 데이터 조각은 원래 데이터 조각보다 1.333 배 더 큽니다. 전송 중에 데이터가 손실되거나 수정되지 않도록하는 방법 일뿐입니다.


5
Base64로 인코딩 된 데이터는 원래 데이터보다 정확히 1.333 (3) 배 더 큽니다. 입력 데이터 모듈로 4의 길이에 따라 0-3 개의 추가 문자가 추가됩니다. 이는 각 base64로 인코딩 된 문자가 6 비트 상당의 정보 (64 개의 서로 다른 문자)를 저장하기 때문입니다. .
너무

2
이전 데이터와 이후 데이터 모두 여전히 이진입니다. 왜 데이터가 손실 얻을
레쉬 텔리

12

Base64는 인쇄 가능한 문자 만 허용하는 매체를 통해 이진 데이터를 표현하고 전송할 수있는 메커니즘입니다. 가장 널리 사용되는 "Base Encoding"형식이며 사용중인 것으로 알려진 다른 형식은 Base16 및 Base32입니다.

Base64에 대한 필요성은 이미지, 비디오 또는 임의의 바이너리 콘텐츠와 같은 이메일에 바이너리 콘텐츠를 첨부해야하기 때문에 발생했습니다. SMTP [RFC 5321]은 메시지 내에서 7 비트 US-ASCII 문자 만 허용했기 때문에 7 비트 ASCII 문자를 사용하여 이러한 이진 옥텟 스트림을 표시해야했습니다.

이것이 질문에 답하기를 바랍니다.


3

Base64는 모든 종류의 이진 데이터를 전송 (실제로 인코딩하지만 전송을 목표로 함)하는 다소 간결한 방법입니다.

http://en.wikipedia.org/wiki/Base64 참조

"일반적인 규칙은 대부분의 인코딩에 공통되는 부분 집합의 일부이며 인쇄 가능한 64 자 집합을 선택하는 것입니다."

이것은 매우 일반적인 목적이며 일반적인 필요는 필요한 것보다 더 많은 공간을 낭비하지 않는 것입니다.

역사적으로 이것은 문자를 바이트에 저장하는 데 사용되는 (거의) 모든 인코딩의 공통 하위 집합이 있고 간단한 데이터 전송 (예 : 복사- 붙여 넣기-이메일 보내기-이메일 수신-복사-붙여 넣기 시퀀스).

(Brian의 의견으로 upvote를 리디렉션하십시오. 더 완전하고 더 명확하게 작성하겠습니다.)


아니, 아직 이르고 완전한 대답을 구체화하고 싶지 않았습니다. 이것은 좋다.
Brian Roach
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.