Linuxコマンド Base64(入力をBase64エンコード/デコードして出力する)

入力をBase64に変換(エンコード)、復元(デコード)するコマンド解説

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Base64

概要・使用方法

Base64は、64種類の文字の英数字で「A~Z」、「a~z」、「0~9」の文字と、「+」と「/」とパディング用として「=」の記号でデータを表現する文字列です。それ以外の文字を扱いことができない通信環境でマルチバイト文字やバイナリデータを扱うためのエンコード方式である。

これはMIMEに規定されていて7ビットしか扱うことができない電子メールで広く利用されている。この変換によって33%のデータ量が増加する。

書式

$ base64 [オプション] [ファイル名・・・]

利用例

  • 電子メール:電子メールではSMTPなどの制約により、7ビット文字列以外をやり取りすることができない。そのため、添付ファイルやバイナリ形式のデータを送信するさいに標準的に利用されている。
  • Basic認証:HTTPヘッダでは、特殊記号を使用することができないため、ユーザー名とパスワードをコロン(:)で区切ってBase64エンコードした文字列が用いられている。
  • 電子掲示板:インターネット上の電子掲示板では、文字列以外のバイナリデータの書き込みが基本的にはできないため、画像やテキスト文書を圧縮したファイルの交換のため、この形式が使われることがある。

オプション

-d
–decode
base64ファイルをデコードする
-i
–ignore-garbase
英数字以外を無視する
オプション一覧表

サンプル:エンコード

$ base64 /bin/ls > ls-base64

サンプル:デコード

$ base64 -d ls-base64

実行結果

[centos@xxx work]$ base64 /bin/ls > ls-base64 #←lsコマンドをエンコードする。
[centos@xxx work]$ ls -l
total 156
-rw-rw-r-- 1 centos centos 158876 May 18 02:53 ls-base64
[centos@xxx work]$ head -n 5 ls-base64 
f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAJENAAAAAAABAAAAAAAAAAOjDAQAAAAAAAAAAAEAAOAAJ
AEAAHgAdAAYAAAAFAAAAQAAAAAAAAABAAEAAAAAAAEAAQAAAAAAA+AEAAAAAAAD4AQAAAAAAAAgA
AAAAAAAAAwAAAAQAAAA4AgAAAAAAADgCQAAAAAAAOAJAAAAAAAAcAAAAAAAAABwAAAAAAAAAAQAA
AAAAAAABAAAABQAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAIyVAQAAAAAAjJUBAAAAAAAAACAA
AAAAAAEAAAAGAAAAKKMBAAAAAAAoo2EAAAAAACijYQAAAAAA2BIAAAAAAAD4HwAAAAAAAAAAIAAA
[centos@xxx work]$ base64 -d ls-base64 > ls #←lsコマンドをデコードする。

[centos@xxx work]$ sha1sum ./ls /bin/ls #←元ファイルと同じことを確認
7a2f99a04c675db4daa4fde035121222d93f2c99  ./ls 
7a2f99a04c675db4daa4fde035121222d93f2c99  /bin/ls
[centos@xxx work]$