Encoding is the process used to convert data in format required for effective transmission or storage.Base64 エンコードは、効率的な伝送または保存に必要な形式でデータを変換するために使用されます。 これに対して、デコードはエンコードとは逆に、エンコードされたデータを元の形式に変換する方法です。 Base64は、バイナリデータをASCIIに変換するエンコーディングプロセスである。 Base64エンコーディングは、バイナリデータを適切に扱えないテキストベースのシステムにバイナリデータを送信する際に発生する伝送上の問題を回避するために必要とされることがほとんどです。 その結果、伝送中に情報が失われたり破損したりします。
- データ圧縮
- データ隠し
- 別のフォーマットでのデータ伝送
データのエンコードに Base64 はアルファベット、数字および = 記号のみを使用しています。 たとえば、c2FtcGxlCg==は有効な符号化データですが、b?HV3.Zh2J==は有効な符号化データではありません。
この記事では、文字列またはファイル内のデータを符号化および復号化するbase64コマンドの使用方法について説明します。 しかし、他のLinuxディストリビューションでも同じコマンドを実行することができます。 コマンドの実行には、Ctrl+Alt+Tキーボードショートカットを使用してアクセスできるコマンドラインTerminalアプリケーションを使用しました。
Base64 Syntax
以下は、Base64 を使用してエンコードするための構文です:
オプション
base64コマンドで使用できるコマンドライン オプションをいくつか紹介します。
このオプションは、ファイルまたは文字列をデコードするのに使用します。
このオプションは、base64の使用法に関するヘルプを表示するために使用する。
デコード時にこのオプションを使用すると、アルファベット以外の文字を無視します
このオプションでバージョン情報を表示します
Encoding String
base64 コマンドで簡単にエンコードすることが可能です。 例えば、「Welcome to Linux」というサンプルテキストをbase64にエンコードするには、次のようなコマンドを実行します。
このコマンドは、次のスクリーンショットに示すように、文字列内のテキストを base64 でエンコードし、エンコードされたテキストを標準出力に出力します
また、リダイレクト演算子を使用して標準出力に出力せずにファイルに保存できます (>)。 次のコマンドはテキストをエンコードし、出力を “encodedfile.txt:
エンコードされたファイルを表示するには、catコマンドを使用します:
デコード文字列
また、-decodeまたは-dオプションを使ってbase64エンコードされたテキストをデコードすることも可能です。 たとえば、base64 エンコードされたテキスト “V2VsY29tZSB0byBMaW51eAo=” をデコードするには、コマンドは次のようになります。
このコマンドでは、次のスクリーンショットに示すように base64 エンコード テキストをデコードして標準出力に元のテキストを表示します。
また、リダイレクト演算子(>)を使って、標準出力に印刷するのではなく、デコードした出力をファイルに保存することもできる。 次のコマンドは、エンコードされたテキストをデコードし、元のテキストを “decodedfile.txt:
Encoding Text File
base64 コマンドはテキストファイルをエンコードするのにも使用可能です。 たとえば、「testfile.txt」という名前のテキストファイルをエンコードするには、次のようにコマンドを実行します。
このコマンドは、次のスクリーンショットに示すように、指定したテキストファイルをエンコードして、標準出力にそのエンコードした形式を表示します。
また、リダイレクト演算子(>)を使って、標準出力に印刷するのではなく、エンコードされた出力をファイルに保存することもできる。 次のコマンドは、ファイル内のテキストを base64 で変換し、出力を “encodedfile.txt:
エンコードされたファイルを見るには、cat コマンドが使えます:
Encodedfile.txtというファイル名を持つ別のファイルに出力を保管します。txt
Decoding Text File
エンコードされたテキストファイルをデコードするには、-decode または -d オプションを使用します。 例えば、base64でエンコードされたテキストファイル「encodedfile.txt」をデコードするには、次のようにコマンドを実行します:
このコマンドは、次のスクリーンショットに示すように、base64エンコードのテキストファイルをデコードして標準出力に元のテキストを表示します。
また、リダイレクト演算子(>)を使って、標準出力に印刷するのではなく、デコードした出力をファイルに保存することができます。 次のコマンドは、エンコードされたテキストをデコードし、元のテキストを “decodedfile.txt” という名前のファイルに保存し、後で cat コマンドを使って見ることができます。
Encoding User Input
base64エンコーディングを使って、ユーザーが作成したデータをエンコーディングすることが可能です。 この目的のために、ユーザー入力を受け取り、base64 エンコードを使用してエンコードし、エンコードされたデータを標準出力に表示するスクリプトを作成する必要があります。
次のコードで “test.sh” というスクリプトを作成します。/bin/bash
# Print message to ask for input
echo “Provide Some data to encode”
# Save the input to a variable named “data”
read data
# Encode using base64 encoding and save the output to a variable “encod_data”
encod_data=`echo -n $data | base64`
# Print encoded output
echo “Encoded text is : $encod_data”
以下のようにスクリプトを実行します:
スクリプトを実行すると、エンコードしたいデータを入力するように求められます。 4880>
Validating User key
ここで、base64デコードの例を見てみましょう。 base64デコードを利用して、ユーザーの有効性をチェックすることにします。 そのために、ユーザーにキーを要求するスクリプトを作成する。 そして、入力されたキーをあらかじめ定義されたキーと照合する。このキーはまずbase64デコードによってデコードされる。
次のコードでスクリプト “test1.sh” を作成します:
# Print message to ask for input
echo “Enter your key”
# Save the key provided by the user to a variable named “key”
read key
# Decode the encoded key (QWJjMTIzCg) and save the output to a variable named “orig_key”
orig_key=`echo ‘QWJjMTIzCg==’ | base64 ->
forig_key=`Echo ‘QWJjMTIzCg==’ | base64 ->
forig_key=`Echo ‘QWJjMTIzCg==’ | base64 -> #.-decode`
# ユーザーが入力したキーとデコードされたキーを比較する
if ; then
#if key matches, print this:
echo “You have entered a valid key”
else
#if key does not match, print this:
echo “The key you have not valid”
fi
Run the script as follows:
スクリプトを実行すると、キーの入力を要求されます。 キーを入力し、Enterキーを押してください。 入力されたキーがあらかじめ定義されたデコードキーと一致する場合は、「You have entered a valid key」というメッセージが表示され、一致しない場合は「The key you have entered is not valid」というメッセージが画面に表示されます。
このようにして、base64を使って、コマンドラインで文字列やファイルに対して符号化やデコードができるようになっているのです。 結果は標準出力に出力するか、ファイルに保存することができる。 しかし、エンコーディングは暗号化とは似て非なるものであり、エンコードされたデータを簡単に明らかにすることができるため、機密データの送信にエンコーディングを使用することはお勧めできません
。