Base64とは

Linux
ブログ

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.txtexample.txtのファイル内容を
Base64でエンコードして、aaa.txtに出力
base64でエンコードされた
ファイルの中身をデコード
base64 -d aaa.txt > bbb.txtBase64でエンコードされたaaa.txt
の中身をでコードしてbbb.txtへ出力
文字列をBase64でエンコードecho ‘Hello’ | base64「Hello」をBase64でエンコード
  結果「V29ybGQ=」
Base64でエンコード
された文字列をでコード
echo ‘V29ybGQ=’ | base64 -d「V29ybGQ=」をデコード
  結果「Hello」

参考文献

コメント