Python 標準ライブラリ base64
Publish date: 2021-12-16
Pythonの標準ライブラリbase64を使うとバイト列とbase64エンコード列の変換を行える。
バイト列→base64エンコード列
import base64
base64.b64encode(b'ab?123') # => b'YWI/MTIz'
base64.b64encode('あいうえお🐍'.encode()) # => b'44GC44GE44GG44GI44GK8J+QjQ=='
URLで問題になる可能性がある/
や+
の文字は第2引数を指定すると代替文字で置き換えられる。
base64.b64encode(b'ab?123', b'-_') # => b'YWI_MTIz'
base64.b64encode('あいうえお🐍'.encode(), b'-_') # => b'44GC44GE44GG44GI44GK8J-QjQ=='
base64エンコード列→バイト列
base64.b64decode(b'YWI/MTIz') # => b'ab?123'
base64.b64decode(b'44GC44GE44GG44GI44GK8J+QjQ==').decode() # =>'あいうえお🐍'
代替文字を指定している場合、第2引数を指定してエンコードを行う。
base64.b64decode(b'YWI_MTIz', b'-_') # => b'ab?123'
base64.b64decode(b'44GC44GE44GG44GI44GK8J-QjQ==', b'-_').decode() # =>'あいうえお🐍'
第1引数はバイト列ではなく文字列も指定できる。
base64.b64decode('YWI/MTIz') # => b'ab?123'
base64.b64decode('44GC44GE44GG44GI44GK8J+QjQ==').decode() # =>'あいうえお🐍'
base64.b64decode('YWI_MTIz', '-_') # => b'ab?123'
base64.b64decode('44GC44GE44GG44GI44GK8J-QjQ==', '-_').decode() # =>'あいうえお🐍'
標準的なbase64変換
標準的なbase64変換には、standard_b64encode
とstandard_b64decode
が用意されている。
base64.standard_b64encode(b'ab?123') # => b'YWI/MTIz'
base64.standard_b64encode('あいうえお🐍'.encode()) # => b'44GC44GE44GG44GI44GK8J+QjQ=='
base64.standard_b64decode(b'YWI/MTIz') # => b'ab?123'
base64.standard_b64decode(b'44GC44GE44GG44GI44GK8J+QjQ==').decode() # =>'あいうえお🐍'
こちらもstandard_b64decode
には文字列も指定可能。
base64.standard_b64decode('YWI/MTIz') # => b'ab?123'
base64.standard_b64decode('44GC44GE44GG44GI44GK8J+QjQ==').decode() # =>'あいうえお🐍'
URLセーフなbase64変換
/
(スラッシュ)を_
(アンダースコア)に、
+
(プラス)を-
(ハイフン)の文字(記号)に変換する
URLセーフなbase64変換用にも関数が用意されている。
base64.urlsafe_b64encode(b'ab?123') # => b'YWI_MTIz'
base64.urlsafe_b64encode('あいうえお🐍'.encode()) # => b'44GC44GE44GG44GI44GK8J-QjQ=='
base64.urlsafe_b64decode(b'YWI_MTIz') # => b'ab?123'
base64.urlsafe_b64decode(b'44GC44GE44GG44GI44GK8J-QjQ==').decode() # => 'あいうえお🐍'
base64.urlsafe_b64decode('YWI_MTIz') # => b'ab?123'
base64.urlsafe_b64decode('44GC44GE44GG44GI44GK8J-QjQ==').decode() # => 'あいうえお🐍'