Edited at

Base64デコード・エンコード

Webの世界などで使用されているBase64のデコード・エンコードについて.

CTF (Capture The Flag) でも使用されることがあるので,軽くまとめてみた.


UNIXコマンド


エンコード

base64コマンドを使用する.

$ echo -n 'base64 encode' | base64

YmFzZTY0IGVuY29kZQ==

-iオプションを使用すると,ファイルから文字列を読み込んでエンコードする.

-oオプションを使用すると,結果をファイルに書き込む.

$ base64 -i input.txt -o output.txt

input.txtの中身

base64 encode

output.txtの中身

YmFzZTY0IGVuY29kZQ==


デコード

-Dオプションをつける(Macの場合).

Linux系の場合は -d (小文字)になります.

# Mac

$ echo 'YmFzZTY0IGVuY29kZQ==' | base64 -D
base64 encode

# Linux
$ echo 'YmFzZTY0IGVuY29kZQ==' | base64 -d
base64 encode

エンコードと同じく,-iオプションと-oオプションは有効.


Python


Python2


エンコード

>>> s = 'base64 encode'

>>> s.encode('base64')
'YmFzZTY0IGVuY29kZQ==\n'


デコード

>>> s = 'YmFzZTY0IGVuY29kZQ=='

>>> s.decode('base64')
'base64 encode'


Python3

標準ライブラリであるbase64モジュールを使用する.


エンコード

base64.b64encode()メソッドを使う.

>>> import base64

>>> s = 'base64 encode'
>>> base64.b64encode(s.encode('utf-8'))
b'YmFzZTY0IGVuY29kZQ=='


デコード

base64.b64decode()メソッドを使う.

>>> import base64

>>> encoded = b'YmFzZTY0IGVuY29kZQ=='
>>> base64.b64decode(encoded)
b'base64 encode'

どちらのメソッドも引数,返り値ともにバイトオブジェクトということに注意.