Base64とは
Base64とは、64種類の文字を使って一定の法則の元、データを変換するエンコード方式です。
Base64はなぜあるの?
メールで使える文字はASCII文字(7bit)しか使えません。でも画像などを送りたい。そこから考え出されたのがMIME(Multipurpose Internet Mail Extension:マイムと読む)なのです。そして、MIMEは、メールの内容をメールが扱える形式(Base64など)に変換して送信するのです。
Base64はどんな時使う?
電子メール
メールの送受信ではMIMEを使っており、Base64などにエンコードしたものを送信して、受信側でデコードします。
Basic認証
HTTPにおける基本認証で、HTTPでは特殊記号を使えないためユーザ名とパスワードをコロンで区切ってBase64エンコードして使う。
Authorization:Basic <Base64でエンコードしたユーザ名:パスワード>
ファイルのアップロード
ファイルのアップロードには「multipart/form-data」を使うことが多いですが、画像などのバイナリデータをBase64にエンコードして送信します。
Base64のエンコード手順
例えば、「World」をBase64でエンコードするには以下のようにします。
1 2進数に変換する
「 01010111 01101111 01110010 01101100 01100100 」
2 6ビットごとに区切る。(6bitに満たない場合は末尾を「0」でパディングする。)
「 010101 110110 111101 110010 011011 000110 010000 」
3 変換表(Base64 table from RFC4648)を参照して文字列に変換する。
4文字ごとに変換し、4文字に満たない場合は、末尾を「=」でパディングする。
「 V29y bGQ= 」
4 文字列をつなげるとBase64の変換結果となる。
「 V29ybGQ= 」
コマンド_base64
base64でファイルの 中身をエンコード | base64 example.txt > aaa.txt | example.txtのファイル内容を Base64でエンコードして、aaa.txtに出力 |
base64でエンコードされた ファイルの中身をデコード | base64 -d aaa.txt > bbb.txt | Base64でエンコードされたaaa.txt の中身をでコードしてbbb.txtへ出力 |
文字列をBase64でエンコード | echo ‘Hello’ | base64 | 「Hello」をBase64でエンコード 結果「V29ybGQ=」 |
Base64でエンコード された文字列をでコード | echo ‘V29ybGQ=’ | base64 -d | 「V29ybGQ=」をデコード 結果「Hello」 |
参考文献
コメント