ウェブサイト検索

Linuxでbase64文字列をエンコードまたはデコードする方法


このBase64の謎を解読しましょう。

Base64のバイナリからテキストへのスキームを使用して、文字列をエンコードおよびデコードする方法を学びたいですか?このチュートリアルでは、Linuxでbase64コマンドとPythonプログラミング言語を使用して文字列をエンコードおよびデコードする2つの方法を紹介します。

base64はどこで使用されていますか?

base64はさまざまな分野で広く使用されています。最も一般的な分野には、電子メールの添付ファイル、ウェブ開発、ネットワーキング、URLエンコーディングなどがあります。

一部のメールシステムでは、バイナリデータ(画像や文書など)をテキスト形式にエンコードするためにbase64を使用し、これによってメッセージと一緒に安全に送信できるようにしています。ウェブ開発者もbase64を使用して、HTTPリクエストの数を減らし、ページの読み込み速度を向上させるために、画像をHTMLやCSSに埋め込んでいます。

Base64エンコーディングのもう一つの一般的な使用法は、認証トークンです。ユーザー名やパスワードは、このエンコーディングスキームを使用してマスクされ、HTTPヘッダーやURLパラメータに追加されることがあります。ネットワーキングでは、Base64は、HTTPやSMTPのようなテキストベースの通信を使用するプロトコルで、データを破損なく転送するために使用されます。

知っておくべきことは、base64は単なるエンコーディング方式であるということです。エンコードされたデータは元のデータに簡単にデコードできます。データを暗号化する必要がある場合には、絶対に使用してはいけません。

base64コマンドを使用して文字列をエンコードする

文字列をbase64でエンコードする最も基本的な方法は、echoコマンドを使用して端末に出力することです。コツは、echoコマンドの出力をbase64にパイプすることです。

echo 'I love Linux' | base64

echoコマンドのデフォルトの動作のために、文字列の末尾には改行文字が含まれています。それを省略して文字列のみを使用したい場合は、次のように実行してください:

echo -n 'I love Linux' | base64

ご覧のように、出力は前のものとは異なります。また、printfコマンドを使用してこれを行うこともでき、これは文字列に自動的に改行文字を追加しません。形式は以下の通りです:

printf 'I love Linux' | base64

この出力は、今回は改行文字がないため、前のものと同じです。Linuxのヒアストリングに慣れている場合は、次のようにして文字列出力をbase64コマンドに送信することもできます:

base64 <<< 'I love Linux'

エコーコマンドと同様に、ここ文字列も文字列の末尾に改行文字を追加します。

base64コマンドを使用してファイルをエンコードする

ファイルをbase64でエンコードするには、ファイルをbase64コマンドのオプションとして直接渡すことができます。

試してみるために、新しいファイルを作成して、そこにテキストを追加してください。すでにテキストファイルがある場合は、それを使用してください。base.txtという名前のファイルを作成しました。ファイルの内容をbase64にエンコードするには、次のコマンドを実行します:

base64 base.txt

base.txt をあなたのファイル名に置き換えることを忘れないでください。上記のコマンドはターミナルに出力を表示するだけで、エンコードされた文字列をどこにも保存しません。しかし、出力を新しいファイルにリダイレクトすることで簡単に保存できます。私は output.txt という別のファイルを作成しました。今回はその空のファイルに出力を保存します。これがそのためのコマンドです:

base64 base.txt > output.txt

ご覧の通り、ターミナルは出力を表示しませんでした。このコマンドは代わりに別のファイルに保存されました。

base64コマンドを使用してbase64文字列をデコードする

base64 文字列をデコードして通常の文字列に変換するには、base64 コマンドに "-d" フラグを使用する必要があります。echo コマンドを使ったデモを見てみましょう。

echo 'SG93VG9HZWVrCg==' | base64 -d

base64文字列をデコードするためにヒアストリングを使用したい場合は、次のようにしてください。

base64 -d <<< SG93VG9HZWVrCg==

時々、文字列に非英数字の文字が含まれている場合があります。それらは、"-i"オプションを使用して文字列をデコードする際に無視できます。

Pythonを使用してbase64文字列をエンコードおよびデコードする

もしあなたがPythonプログラマーであるか、BashよりもPythonプログラミング言語に慣れているのなら、この方法はあなたにより適しています。Pythonには文字列をエンコードおよびデコードするために使用できるbase64モジュールがあります。python3のターミナルコマンドを使用するか、完全なプログラムを書くことができます。両方の方法をお見せします。

python3コマンドには「-m」またはモジュールフラグがあります。このフラグを使ってbase64モジュールを呼び出すことができます。そして、echoコマンドやここ文字列を使って文字列を渡すことができます。こちらが完全なコマンドです。

echo 'I love Linux' | python3 -m base64 # Using the echo commandpython3 -m base64 <<< 'I love Linux' # Using here-strings

Base64文字列をデコードするには、以前にbase64コマンドで見たように、単に「-d」オプションを使用すればよいです。構文は以下の通りです:

echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Using the echo commandpython3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Using here-strings

もちろん、便利な方法は、ユーザー入力を受け取ってエンコーディングとデコーディングを処理できるPythonプログラムを作成することです。まず、文字列をエンコードするプログラムを作成しましょう。こちらがエンコーディングコードです:

import base64
Get input string from the user
input_string = input("Enter the string to encode: ")
Encode the string using base64
encoded_string = base64.b64encode(input_string.encode('utf-8'))
Decode the encoded string to ensure it's correct (optional)
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
Print the encoded and decoded strings
print("Encoded string:", encoded_string.decode('utf-8'))
print("Decoded string (verification):", decoded_string)

ファイルを適切な名前と「.py」拡張子で保存します。私はbase64_encoder.pyという名前で保存しています。完了したら、次のコマンドでプログラムを実行します:

python3 base64_encoder.py

Base64文字列をデコードするプログラムを作成することもできます。こちらが使用できるコードのスニペットです:

import base64
Get input base64 string from the user
encoded_string = input("Enter the Base64 string to decode: ")
try:
   Decode the string using base64.b64decode()
   decoded_string = base64.b64decode(encoded_string).decode('utf-8')
   print("Decoded string:", decoded_string)
except Exception as e:
   print(f"Error decoding string: {e}")

ファイルを保存し、同じようにプログラムを実行します。

python3 base64_decoder.py

今、これらのPythonプログラムを使って、任意の文字列をエンコードおよびデコードできます。


これが、base64を使用して文字列をエンコードおよびデコードする最も簡単な方法の2つです。Linuxでのbase64コマンドについてもっと学びたい場合は、そのマニュアルページを確認するのが良いでしょう。

関連記事: