Pythonのbase64サポートモジュールについて
Pythonには標準でBase64エンコード/デコードをサポートする「base64」モジュールがあり、以下の関数に対象の文字列を渡すことで、戻り値として処理結果が得られる。
標準バージョン:
URLの一部として安全に使用するバージョン:
下はPython 2での簡単な例。
(2009/3/14)文字列メソッドのencode()とdecode()でもBase64エンコード/デコードができることが分かった(nullpobug氏に感謝)。下のコードもそれに伴って修正。
#! /usr/bin/python # -*- coding: utf-8 -*- import base64 plain_str = u'試験運用中なLinux備忘録'.encode ('utf-8') print "plain_str: " + plain_str encoded = base64.standard_b64encode (plain_str) print "encoded = base64.standard_b64encode (plain_str): " + encoded decoded = base64.standard_b64decode (encoded) print "decoded = base64.standard_b64decode (encoded): " + decoded encoded = plain_str.encode ('base64') print "encoded = plain_str.encode ('base64'): " + encoded decoded = encoded.decode ('base64') print "decoded = encoded.decode ('base64'): " + decoded
上のコードを実行すると下のようになる。
plain_str: 試験運用中なLinux備忘録 encoded = base64.standard_b64encode (plain_str): 6Kmm6aiT6YGL55So5Lit44GqTGludXjlgpnlv5jpjLI= decoded = base64.standard_b64decode (encoded): 試験運用中なLinux備忘録 encoded = plain_str.encode ('base64'): 6Kmm6aiT6YGL55So5Lit44GqTGludXjlgpnlv5jpjLI= decoded = encoded.decode ('base64'): 試験運用中なLinux備忘録
(2014/10/10)Python 3では下のような使い方になる。
#! /usr/bin/python # -*- coding: utf-8 -*- import base64, codecs plain_str = '試験運用中なLinux備忘録' print ('plain_str = {0} ({1})'.format (plain_str, plain_str.encode ('utf-8'))) encoded = base64.standard_b64encode (plain_str.encode ('utf-8')) print ('encoded = base64.standard_b64encode (plain_str): {0}'.format (encoded)) decoded = base64.standard_b64decode (encoded) print ('decoded = base64.standard_b64decode (encoded): {0} ({1})'.format (decoded, str (decoded, encoding='utf-8'))) encoded = codecs.encode (plain_str.encode ('utf-8'), 'base64') print ("encoded = codecs.encode (plain_str.encode ('utf-8'), 'base64'): {0}".format (encoded)) decoded = codecs.decode (encoded, 'base64') print ("decoded = codecs.decode (encoded, 'base64'): {0} ({1})".format (decoded, str (decoded, encoding='utf-8')))
出力は下のようになる。
plain_str = 試験運用中なLinux備忘録 (b'\xe8\xa9\xa6\xe9\xa8\x93\xe9\x81\x8b\xe7\x94\xa8\xe4\xb8\xad\xe3\x81\xaaLinux\xe5\x82\x99\xe5\xbf\x98\xe9\x8c\xb2') encoded = base64.standard_b64encode (plain_str): b'6Kmm6aiT6YGL55So5Lit44GqTGludXjlgpnlv5jpjLI=' decoded = base64.standard_b64decode (encoded): b'\xe8\xa9\xa6\xe9\xa8\x93\xe9\x81\x8b\xe7\x94\xa8\xe4\xb8\xad\xe3\x81\xaaLinux\xe5\x82\x99\xe5\xbf\x98\xe9\x8c\xb2' (試験運用中なLinux備忘録) encoded = codecs.encode (plain_str.encode ('utf-8'), 'base64'): b'6Kmm6aiT6YGL55So5Lit44GqTGludXjlgpnlv5jpjLI=\n' decoded = codecs.decode (encoded, 'base64'): b'\xe8\xa9\xa6\xe9\xa8\x93\xe9\x81\x8b\xe7\x94\xa8\xe4\xb8\xad\xe3\x81\xaaLinux\xe5\x82\x99\xe5\xbf\x98\xe9\x8c\xb2' (試験運用中なLinux備忘録)