96

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

4

3 に答える 3

127

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

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

于 2012-04-25T13:00:07.743 に答える
17

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

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

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

于 2016-05-13T02:03:46.063 に答える
4

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

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

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

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

歴史的には、文字をバイトに格納するために使用される(ほぼ)すべてのエンコーディングの共通のサブセットがあり、2 ^ 8の可能なバイトの多くは、単純なデータ転送(たとえば、コピー-貼り付け-emailsend-emailreceive-copy-pasteシーケンス)。

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

于 2012-04-25T12:51:37.600 に答える