Base 64エンコーディングの目的は何ですか、なぜそれがHTTP基本認証で使用されたのですか?


129

Base64暗号化を取得できません。

Base64文字列を復号化できる場合、それは何の目的ですか?

なぜHTTP基本認証に使用されているのですか?

それは誰かに私のパスワードがOLLEHに逆になっていることを伝えるようなものです。

OLLEHを見た人は、元のパスワードがHELLOだったことがわかります。




10
base64は暗号化ではなく、エンコーディングです
n611x007

回答:


248

Base64は暗号化ではなく、エンコーディングです。これは、印刷可能な(テキスト)文字のみを使用してバイナリデータを表現する方法です。

ウィキペディアのページから、HTTP基本認証のこの段落を参照してください。

通常、ユーザー名とパスワードをBase64アルゴリズムでエンコードすると、肉眼では判読できなくなりますが、エンコードと同じくらい簡単にデコードできます。セキュリティは、エンコード手順の目的ではありません。むしろ、エンコードの目的は、ユーザー名またはパスワードに含まれる可能性がある非HTTP互換文字をHTTP互換文字にエンコードすることです。


4
また、文字列から「バイナリデータ」を取得するための関連する文字エンコーディングはiso-8859-1である必要があります。(出典
Myobis 2014

60

これは通常、暗号化ではなく、base64エンコーディングと呼ばれます。base64エンコーディングの良い点は、使用可能な文字の限られた共通サブセットのみを使用して(バイナリ)データを表現できることです。たとえば、1と0の文字列をASCIIとして単に書き込むよりもはるかに効率的です。


6
+1ですが、1s、0sストリームでのデータの格納との比較は誇張されすぎています。16進形式でデータを格納する場合と比較することをお勧めします。hexはx2元のストリームよりも多くのバイトを作成するだけであり、1s、0s- x8倍のバイト数を作成します。(そしてBase64はx1.3元のバイト配列より多くのデータを作成します)。したがって、バイナリストリームを16進文字列としてエンコードし、バイト量を2倍にすることも許容されます。たとえば、データベースにパスワードハッシュを格納するだけです。
Agnius Vasiliauskas 2011

30

エンクリプトイオンは、復号化するために、キー(文字列またはアルゴリズム)が必要です。したがって、「暗号化」(ルート:暗号化

Enは代金引換 INGの修正/シフトを/別に文字コードを変更します。この場合、HTTPを使用して、通常のデータバイトを簡単に表現して転送できます。


5
暗号化は単に「非表示にする」ことを意味します。キーベースの暗号化はごく最近の発明です。暗号化は、暗号化として使用されているエンコードの形式です(ただし、何百年もの間、12歳を超える人は使用していません)。

2
専門用語の暗号化は、最近の暗号化モード、具体的には鍵ベース(公開鍵/秘密鍵)であるコンピューター暗号化を指すために使用されます。真実ですが、日付の付いた単語の文字どおりの定義を指摘する必要はありません。それ以外の場合は、今日使用されている多くの英語の単語の歴史的な定義について議論するでしょう。言葉(場合によっては口語)は言葉に文脈を与え、したがって定義を与えるものです。
vol7ron、2011年

1
私はあなたが失礼に聞こえたとは思わない。現代の文脈についてのあなたの意見に同意します。言葉と定義は常に進化しています。「エンコード」と「暗号化」は確かに現代のコンピューティングでは2つの非常に異なる定義を持っていると思います。あなたの答えは違いを要約するために努力しています。
Dan Bechard、2015年

Base64エンコーディングは難読化の一種であり、単に不明確にすることを意味します。多くのアプリケーションでは、これは十分な暗号化であり、たとえば、回線を介して送信されるクリアテキストを単純に壊すことが目的です。
Dominic Cerisano 2016年

6
@DominicCerisano:いいえ、base64エンコードは暗号化としてカウントされません。何かを保護するためにそれを使用しないでください。
Ry-

19

日常の言葉では、「コード」は何か秘密です。科学と工学では、コードは単に何かを書く方法についての合意、一連のルールです。

そのコード秘密かもしれません。その場合、それは暗号化と呼ばれます。しかし、一般的に、コードは秘密ではありません。遺伝暗号を取りなさい。-それは単に私たちのDNAは、4個の異なる塩基から構築されていると述べ  ACGTと一緒になって3つの塩基が1個のアミノ酸を形成します。3つの文字がどのアミノ酸を形成するかという表もあります。

このコードには何の秘密もありません。

同様に、Base64は秘密のコードではありません。むしろ、1文字あたり6ビットでデータを保存できるコードです(つまり、10の異なるエンティティがあるため、10進法の基数が10であるのと同様に、64の異なるエンティティがあります。つまり、システムの「ベース」は64です。 「数字」と呼ばれます)。



17

Base-64エンコーディングはMIME仕様の一部です。元のクライアントで使用されているものとは異なるエンコーディングスキームを使用するホストを介して中継される場合に、データが転送されても転送されないトランスポートセーフエンコーディングを提供します。

インターチューブには多くの異なるホストがあり、7ビットASCII以外のサポートは、データの損失や混乱の危険を冒すことなしに想定できません。

たとえば、IBMメインフレームは、EBCDICと呼ばれるエンコーディングを使用します(これには、さまざまなフレーバーが含まれます)。このコードポイントは、ASCIIベースの「プーター」で使用されるコードポイントとは完全に異なります。ASCIIでは、A〜Zの文字は0x41〜0x5Aです。EBCDICでは、A〜Zの文字は連続した範囲ではありません。AIの文字は0xC1〜0xC9にあり、JRの文字は0xD1〜0xD9にあり、SZの文字は0xE2〜0xE9にあります。


0

デフォルトでは、ハイパーテキスト転送プロトコル(HTTP)メッセージのメッセージヘッダーフィールドパラメータは、ISO-8859-1文字セット以外の文字を運ぶことができません。

ユーザー名とパスワードに互換性のない文字セットが含まれている場合、HTTPはそれらのテキストを運ぶことができません。これを防ぐために、ユーザー名とパスワードをbase64でエンコードし、HTTP互換の文字をHTTP経由で送信していることを確認します。詳細については、このBasic_access_authenticationを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.