2021-12-16に投稿

Python 標準ライブラリ base64

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_b64encodestandard_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() # => 'あいうえお🐍'

参考

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント