Base64のエンコードとデコードの方法を学びたいですか?このチュートリアルでは、Base64エンコードとデコードの手順を、Bashシェルスクリプトとさまざまな例を使って説明します。
Base64エンコーディング法は、バイナリデータをテキストに変換し、エンコードされたデータをあらゆる通信媒体で送信できるようにします。このエンコード方式は、主に電子メールの暗号化処理で使用されます。
一般に、Base64 エンコーディング方式はバイナリからテキストへのエンコーディング方式で、8 バイトのバイナリデータを ASCII 文字列形式で表現します。様々なメディア間でデータを転送する際、特にテキストコンテンツを確実にサポートするメディアでは、このエンコーディング方式を使用する利点がいくつかあります。その結果、Base64 エンコーディング方式は World Wide Web で広く使われています。このエンコーディング方式は、電子メールの添付ファイルのエンコーディングに最もよく使われています。
Base64エンコーディングテーブルによると、バイナリデータは64の異なるASCII文字にBase64エンコードすることができ、これには大文字のAからZ、小文字のaからz、数字から、および送信や印刷に便利な記号+と/が含まれます。
64個のASCII文字は、fromからtoまでのバイナリ値を表します。終端以外のBase64エンコードされた各文字は、正確に6ビットのバイナリ値を表します。
Bashのbase64エンコードとデコード
構文
例を示すために、まずBase64の基本構文を紹介します。
base64 [OPTIONs] [INFILE] [OUTFILE]
- オプション:以下の表を参照し、いずれかのオプションを提供することも、複数のオプションを組み合わせることもできます。
 - 入力:標準入力またはファイルから入力できます。
 - 出力
OUTFILE):出力をターミナルやファイルなどの標準出力にリダイレクトできます。 
-e 或者 --encode | 
このオプションは、標準入力またはファイルから読み込んだデータをエンコードするために使用します。これはデフォルトのオプションです。 | 
-d 或者 --decode | 
このオプションは、標準入力データまたはファイルから読み込んだBase64エンコードされたデータをデコードするために使用します。 | 
-n 或者 --noerrcheck | 
デフォルトでは、Base64はデータをデコードする際にエラーを自動的にチェックします。このオプションを使うと、デコード時にチェックを無視することができます。 | 
-i 或 --ignore-garbage | 
このオプションは、デコード時にアルファベット以外の文字を無視するために使います。 | 
-u 或者 --help | 
このオプションは、このコマンドの使用に関する情報を取得するために使用します。 | 
例1:基本的なコーディング
LinuxではBase64パッケージがデフォルトでインストールされているので、コマンドラインから簡単にBase64を使うことができます。文字列やテキストをエンコードするには、base64コマンドにパイプし、エンコードされるテキストを取得します。以下の例では、文字列debugpoint.comがBase64エンコードされています。
echo "debugpoint.com" | base64
結果はBase64エンコードされた文字列です。
説明
Base64エンコーディング法は、入力データを変換するために以下のステップを使用します。まず、各入力文字が8ビットのバイナリ値に変換され、次にバイナリ文字列が6ビットのバイナリ値のグループに分割され、次に各6ビットのバイナリ値が10進数値に変換されます。
最後に、各10進数値は、Base64エンコードされたインデックステーブルを使用してBase64文字に変換されます。
上記の例では、最初の文字dは2進数に変換されます。最初の6ビットは 、10進数に変換されます。 これはBase64エンコーディングのインデックステーブルではZに相当し、入力されるテキストストリーム全体がこのようにエンコードされます。エンコード処理の例を以下に示します。
例2:基本的なデコーディング
文字列をデコードするには、-decodeオプションを付けてエンコードした値をbase64コマンドに渡すと、入力した文字列が出力されます。
例 3: テキストファイルのエンコード
例1と同じコマンドを使って、テキストファイルをエンコードし、その出力を別のテキストファイルにリダイレクトすることもできます。その方法は以下の通り。
base64 example3.txt > example3-encoded.txt
例4:テキストファイルのデコード
Base64でエンコードされたテキストファイルをデコードするには、-decodeまたは-dオプションを使い、テキストファイル名を渡します。
base64 -d example3-encoded.txt
例 5: ユーザー入力データのエンコード
Bashシェルを使ったプログラミングでは、ターミナルからユーザー入力を受け取り、それをBase64エンコードすることができます。簡単なシェルスクリプトを書いて、実行可能なパーミッションで実行する必要があります。
以下は、ユーザーから入力を受け取り、それをBase64エンコードし、最後にエンコードされた文字列を表示する簡単な例です。
#!/bin/bash#Sample program to take input, encode to base64 and display on terminal#Example by www.debugpoint.comecho "Enter text for encoding to base64:"read input_textoutput_text=`echo -n $input_text | base64`echo "The Base64 Encoded text is: $output_text"
例6:Base64による単純な認証
上で説明したエンコードとデコードの方法を使えば、簡単な認証システムを 実装することができます。ユーザーにパスワードやパスコードを入力させ、そのパスワードをファイルに保存することもできます。あるいはリアルタイムで比較を行うこともできます。
保存されたエンコード文字列が、ユーザが入力したテキストを再エンコードした文字列と一致すれば、 ユーザを認証することができます。これは認証をチェックするための非常に単純な方法ですが、 単純なビジネスケースで有用なこともあります。
#!/bin/bash#Sample program to take input, encode to base64 and display on terminal#Example by www.debugpoint.comecho "Type your password"read pwd1decoded_text = 'echo\x20\x27U2lsZW5jZSBpcyBnb2xkZW4h\x27\x20|\x20base64\x20--decode';if [[ $pwd1 == $decoded_text ]]echo "You are a valid user."echo "You are NOT a valid user."
まとめ





