base64
인코딩이 무엇 base64
이며 C #에서 인코딩 을 계산 하는 방법을 알고 있지만 문자열을 base64로 변환 할 때 =
끝에 가 있음을 여러 번 보았습니다 .
몇 가지 질문이 나왔습니다.
- 않습니다
base64
항상 함께 문자열 끝=
? =
끝에 끝에 추가되는 이유는 무엇 입니까?
base64
인코딩이 무엇 base64
이며 C #에서 인코딩 을 계산 하는 방법을 알고 있지만 문자열을 base64로 변환 할 때 =
끝에 가 있음을 여러 번 보았습니다 .
몇 가지 질문이 나왔습니다.
base64
항상 함께 문자열 끝 =
?=
끝에 끝에 추가되는 이유는 무엇 입니까?답변:
패딩 역할을 합니다.
더 완전한 대답은 base64로 인코딩 된 문자열이 항상 a로 끝나는 =
것이 아니라 =
문자열을 적절한 길이로 채워야하는 경우 1-2로 끝나는 것 입니다.
=
충분합니다. 경계를 찾으려면 종료자가 항상 있어야합니다 (그리고 여전히 하나의 문자 만 필요합니다). Base64의 전체 패딩 개념은 단지 두뇌 방어 일뿐입니다.
base64
그림과 예제 를 효율적으로 패딩하는 방법을 설명하는 관련성 있고 안정적인 링크가 게시되기를 바랍니다 . wikipedia에 대한 현재 링크는 @NH와는 전혀 관련이 없습니다. 말하는.
1- 아니오
2- 짧은 대답으로 : 65 번째 문자 ( "="부호)는 메시지를 인코딩하는 최종 프로세스에서 보완 물로만 사용됩니다.
Base64
인코딩에 각각 3 바이트 (8 비트) 가 걸리고 ASCII 표준에서 인쇄 가능한 4 개의 문자 로 표시 되므로 문자열에 3 자의 배수가 있으면 '='기호가 없습니다 .
세부 사항 :
(a) 인코딩하려는 경우
ABCDEFG <=> [ ABC
] [ DEF
] [G
Base64
첫 번째 블록과 두 번째 블록 (완료 됨)을 처리 (4 자 생성)하지만 세 번째 블록은 ==
필요한 문자 4 개를 완성하기 위해 출력에 두 배 를 추가합니다 . 따라서 결과는 QUJD REVG Rw == (공간없이)
(b) 인코딩하려는 경우 ...
ABCDEFGH <=> [ ABC
] [ DEF
] [GH
마찬가지로 =
출력 끝에 하나만 추가 하여 4자를 가져옵니다. 결과는 QUJD REVG R0g = (공백없이)입니다.
등호 (=)는 특정 형식의 base64 인코딩에서 패딩으로 사용됩니다. base64 의 Wikipedia 기사 에 자세한 내용이 있습니다.
패딩입니다. 에서 http://en.wikipedia.org/wiki/Base64 :
이론적으로, 패딩 문자는 디코딩에 필요하지 않습니다. 누락 된 바이트 수는 Base64 자릿수에서 계산 될 수 있기 때문입니다. 일부 구현들에서, 패딩 문자는 필수적이지만, 다른 것들에서는 사용되지 않는다. 패딩 문자가 필요한 경우는 여러 Base64 인코딩 파일을 연결하는 것입니다.
decode(encode(A)+encode(B))=A+B
패딩과 함께 작동하지만 그렇지 않으면 작동하지 않습니다.
http://www.hcidata.info/base64.htm
"Mary have"를 Base 64로 인코딩
이 예에서는 간단한 텍스트 문자열 ( "Mary have")을 사용하지만 데이터가 무엇이든 (예 : 그래픽 파일) 원칙이 적용됩니다. 24 비트의 입력 데이터를 32 비트의 출력으로 변환하기 위해 Base 64 인코딩은 24 비트를 6 비트의 4 개 청크로 분할합니다. 첫 번째 문제는 "Mary have"가 3 바이트의 배수가 아니라 8 바이트 길이라는 것입니다. 이 때문에 마지막 비트 그룹은 길이가 4 비트에 불과합니다. 이를 해결하기 위해 '0'의 두 비트를 추가하고 끝에 '='를 넣어서이 사실을 기억하십시오. Base 64로 변환 할 텍스트 문자열의 길이가 7 바이트 인 경우 마지막 그룹은 2 비트입니다. 이 경우, 우리는 '0'의 4 비트를 더 추가하고 마지막에 '=='를 두어이 사실을 기억합니다.