PythonでBase64エンコーディングを行う際、パディング(’=’)が不要な場合があります。これは、エンコードされた文字列が特定の長さ(3の倍数)でない場合に発生します。しかし、Pythonにはこの問題を解決する方法がいくつかあります。

base64.b64decodeを使用する

Pythonのbase64.b64decode関数は、余分なパディングを切り捨てることができます。つまり、b'abc='b'abc=='と同じように動作します。これは、最大2つのパディング文字(b'==')を追加すれば、base64は不要なものを切り捨てるということです。

import base64
s = b'abc'
decoded_s = base64.b64decode(s + b'==')

ただし、文字列sにすでにパディングがある場合(例えば、b\"aGVsbG8=\")、このアプローチはvalidateキーワード引数がFalse(デフォルト)に設定されている場合にのみ動作します。validateTrueの場合、合計パディングが2文字を超えるとbinascii.Errorが発生します。

unpaddedbase64パッケージを使用する

Pythonのunpaddedbase64パッケージを使用すると、パディングなしでBase64エンコーディングとデコーディングを行うことができます。

import unpaddedbase64

encoded_s = unpaddedbase64.encode_base64(b'x00')  # 'AA'
decoded_s = unpaddedbase64.decode_base64('AA')  # b'x00'

この記事がPythonでBase64エンコーディングをパディングなしで行う方法についての理解を深めるのに役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です