Base64エンコーディングの本当の目的は何ですか?


81

なぜBase64エンコーディングがあるのですか?私は初心者ですが、なぜバイトを他の何かに難読化するのか(暗号化でない限り)本当にわかりません。私が読んだ本の1つで、Base64エンコーディングはバイナリ送信が不可能な場合に役立ちます。例えば。フォームを投稿すると、エンコードされます。しかし、なぜバイトを文字に変換するのでしょうか。バイトをスペースを入れて文字列形式に変換するだけではいけませんか?たとえば、00000001 00000004?または0000000100000004、バイトは常に8のペアになるため、スペースがないだけですか?


11
base64のように3バイトを4バイトに変換するのではなく、1バイトを8バイトに変換したからです(メモリが正しく機能する場合)。帯域幅は有限です。
ブライアンローチ

あなたはビット(8ビットで1バイトを作る)とバイトを混同していますが、これらはあらゆる種類のグループに分類できます。
デニーズセギュレ2012

回答:


108

Base64は、コンテンツ自体を紛失したり変更したりすることなくデータを送信するために、ほとんどすべてのコンピュータシステムで知られているASCII文字セットにバイナリデータをエンコードする方法です。たとえば、メールシステムはASCII(テキスト)データを想定しているため、バイナリデータを処理できません。そのため、画像や別のファイルを転送したい場合、データの処理方法が原因で破損します。

注:base64エンコーディングは、暗号化の方法でも、データを圧縮する方法でもありません。実際、base64でエンコードされたデータは元のデータの1.333…倍の大きさです。これは、転送中にデータが失われたり変更されたりしないようにするための唯一の方法です。


5
Base64でエンコードされたデータは、元のデータの正確に1.333(3)倍+ 4を法とする入力データの長さに応じて追加の0〜3文字です。これは、base64でエンコードされた各文字が6ビット相当の情報(64の異なる文字)を格納するためです。 。
あまりにも

2
前後のデータはまだバイナリです。次に、データが失われる理由
Naresh Teli 2018

12

Base64は、印刷可能な文字のみを許可するメディアを介してバイナリデータを表現および転送できるようにするメカニズムです。これは、「Base Encoding」の最も一般的な形式であり、使用されている他の形式はBase16およびBase32です。

Base64の必要性は、画像、ビデオ、または任意のバイナリコンテンツなどの電子メールにバイナリコンテンツを添付する必要性から生じました。SMTP [RFC 5321]はメッセージ内で7ビットのUS-ASCII文字しか許可しなかったため、7ビットのASCII文字を使用してこれらのバイナリオクテットストリームを表す必要がありました...

これが質問に答えることを願っています


3

Base64は、あらゆる種類のバイナリデータを送信する(実際にはエンコードしますが、送信することを目的とした)多かれ少なかれコンパクトな方法です。

http://en.wikipedia.org/wiki/Base64を参照してください

「一般的なルールは、ほとんどのエンコーディングに共通のサブセットの一部であり、印刷も可能な64文字のセットを選択することです。」

これは非常に一般的な目的であり、一般的なニーズは必要以上のスペースを無駄にしないことです。

歴史的に、これは、文字をバイトに格納するために使用される(ほぼ)すべてのエンコーディングの共通のサブセットがあり、2 ^ 8の可能なバイトの多くは、単純なデータ転送中に損失または変換のリスクがあるという事実に基づいています(たとえば、コピー-貼り付け-メール送信-メール受信-コピー-貼り付けシーケンス)。

(賛成票をブライアンのコメントにリダイレクトしてください。私はそれをより完全にし、うまくいけばより明確にします)。


いや、それはまだ早いので、私は完全な答えを具体化する気がしませんでした。これはいい。
ブライアンローチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.