기본 64 인코딩의 목적은 무엇이며 HTTP 기본 인증에 사용 된 이유는 무엇입니까?


129

Base64 암호화를 얻지 못했습니다.

Base64 문자열을 해독 할 수 있다면 목적은 무엇입니까?

왜 HTTP Basic 인증에 사용됩니까?

누군가에게 내 비밀번호가 OLLEH로 바뀌 었다고 말하는 것과 같습니다.

OLLEH를 보는 사람들은 원래 비밀번호가 HELLO라는 것을 알게 될 것입니다.




10
base64는 암호화가 아니라 인코딩입니다.
n611x007

답변:


248

Base64는 암호화가 아니라 인코딩입니다. 인쇄 가능한 (텍스트) 문자 만 사용하여 이진 데이터를 나타내는 방법입니다.

HTTP 기본 인증에 대해서는 Wikipedia 페이지 에서이 단락을 참조하십시오 .

Base64 알고리즘으로 사용자 이름과 암호를 인코딩하면 일반적으로 육안으로 읽을 수 없지만 인코딩되는 것처럼 쉽게 해독됩니다. 보안은 인코딩 단계의 의도가 아닙니다. 대신, 인코딩의 목적은 사용자 이름 또는 비밀번호에있을 수있는 비 HTTP 호환 문자를 HTTP 호환 문자로 인코딩하는 것입니다.


4
또한 문자열에서 '이진 데이터'를 가져 오는 관련 문자 인코딩은 iso-8859-1 이어야합니다 . ( 출처 )
Myobis

60

일반적으로 암호화가 아닌 base64 인코딩이라고합니다 ! base64 인코딩의 좋은 점은 사용 가능한 문자의 제한된 공통 서브 세트 만 사용하여 (이진) 데이터를 표현할 수 있다는 것입니다. 예를 들어 ASCII로 1과 0의 문자열을 쓰는 것보다 훨씬 효율적입니다.


6
+1이지만 1,0s 스트림에 데이터를 저장하는 것과 비교하면 너무 과장되었습니다. 16 진 형식으로 데이터를 저장하는 것과 비교하는 것이 좋습니다. 16 진수는 x2원래 스트림보다 많은 바이트를 만들고 1,0은- x8시간을 더 많은 바이트로 만듭니다 . 그리고 Base64는 x1.3원래 바이트 배열보다 많은 데이터를 만듭니다 . 따라서 이진 스트림을 16 진수 문자열로 인코딩하여 바이트 수를 두 배로 늘릴 수 있습니다 (예 : 데이터베이스에 비밀번호 해시 저장).
Agnius Vasiliauskas

30

크립트 이온 해독하기 위해 키 (문자열이나 알고리즘) 요구; 따라서 "crypt"(루트 : cryptography )

욕실은 대구 보내고 수정 / 교대 / 다른으로 문자 코드를 변경합니다. 이 경우 HTTP를 사용하여 일반적인 바이트 데이터를 쉽게 표현하고 전송할 수 있습니다.


5
암호화는 "숨겨지다"를 의미합니다. 키 기반 암호화는 최신 발명입니다. 암호화는 암호화로 사용 된 인코딩 형식입니다 (12 세 이상은 수백 년 동안 사용하지는 않음).

2
언어의 암호화는 최신 암호화 모드, 특히 키 기반 (공개 / 개인 키) 인 컴퓨터 암호화를 나타내는 데 사용됩니다. 사실이지만 날짜가 지정된 단어의 문자 적 ​​정의를 지적 할 필요는 없습니다. 그렇지 않으면 오늘날 사용되는 많은 영어 단어의 역사적 정의를 논쟁 할 것입니다. 모국어 (때로는 구어체)는 단어의 맥락과 정의를 제공합니다.
vol7ron

1
나는 당신이 무례하게 들리지 않았다고 생각합니다. 현대의 맥락에 대한 당신의 의견에 동의합니다. 단어와 정의는 끊임없이 발전하고 있습니다. "인코딩"과 "암호화"는 현대 컴퓨팅에서 두 가지 매우 뚜렷한 정의를 가지고 있으며 귀하의 답변은 차이점을 요약하는 데 큰 노력을 기울입니다.
Dan Bechard

Base64 인코딩은 난독 화의 한 형태로, 명확하지 않은 렌더링을 의미합니다. 많은 응용 프로그램의 경우 이것은 예를 들어 유선을 통해 전송되는 일반 텍스트를 간단하게 처리하기위한 충분한 암호화입니다.
Dominic Cerisano

6
@DominicCerisano : 아니요, base64 인코딩은 암호화로 계산되지 않으므로 아무것도 보호하기 위해 사용하지 않기를 바랍니다.
Ry-

19

일상 언어에서 "코드"는 비밀입니다. 과학 및 공학에서 코드는 단순히 무언가를 작성하는 방법에 대한 계약, 규칙 집합입니다.

그 코드 비밀 일 수 있습니다. 이 경우이를 암호화라고합니다. 그러나 일반적으로 코드는 비밀이 아닙니다. 유전자 코드를 가져 가라. - 그것은 단순히 우리의 DNA는 네 개의 다른 기지에서 구축한다고  A, C, GT 세 개의 기지가 함께하고 있다는 하나를 아미노산을 형성한다. 또한 세 글자가 어떤 아미노산을 형성하는지에 대한 표도 있습니다.

이 코드에 대한 비밀은 없습니다.

마찬가지로 Base64는 비밀 코드가 아닙니다. 오히려 문자 당 6 비트로 데이터를 저장할 수있는 코드입니다 (따라서 10 개의 다른 엔터티가 있기 때문에 64 개의 다른 엔터티가 있습니다. 즉, 시스템의 "베이스"가 10 인 것처럼 시스템의 "베이스"는 64입니다) "숫자"라고 함).



17

Base-64 인코딩은 MIME 사양의 일부입니다. 운송 안전을 제공합니다원래 클라이언트가 사용하는 것과 다른 인코딩 체계를 사용하는 호스트를 통해 릴레이되는 경우 씹지 않는 데이터에 대해 인코딩을 .

인터 튜브에는 많은 다른 호스트가 있으며 실제로 데이터 손실 / 혼란의 위험없이 7 비트 ASCII 이외의 것을 지원한다고 가정 할 수는 없습니다.

예를 들어, IBM 메인 프레임은 EBCDIC (다양한 풍미가 있음)이라는 인코딩을 사용합니다. 코드 포인트는 ASCII 기반 'puters'에서 사용하는 코드 포인트와 완전히 다릅니다. ASCII에서 문자 AZ는 0x41-0x5A입니다. EBCDIC에서 문자 A-Z는 연속적인 범위도 아닙니다 : 문자 AI는 0xC1-0xC9에, 문자 JR은 0xD1-0xD9에, 문자 SZ는 0xE2-0xE9에 있습니다.


0

기본적으로 HTTP (Hypertext Transfer Protocol) 메시지의 메시지 헤더 필드 매개 변수는 ISO-8859-1 문자 세트 외부의 문자를 전달할 수 없습니다.

사용자 이름과 비밀번호에 호환되지 않는 문자 세트가 포함되어 있으면 HTTP보다 해당 텍스트를 전달할 수 없습니다. 이를 방지하기 위해 사용자 이름과 비밀번호를 base64로 인코딩하여 HTTP를 통해 HTTP 호환 문자를 보내도록합니다. 자세한 내용은이 Basic_access_authentication을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.