Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用したBase64データエンコーディング


base64モジュールの関数は、バイナリデータをプレーンテキストプロトコルを使用した送信に適したASCIIのサブセットに変換します。

エンコーディングおよびデコーディング機能は、Base16、Base32、およびBase64アルゴリズムを定義するRFC 3548の仕様と、デファクトスタンダードのAscii85およびBase85エンコーディングの仕様を実装します。 RFC 3548エンコーディングは、バイナリデータのエンコーディングに適しており、電子メールで安全に送信したり、URLの一部として使用したり、HTTPPOSTリクエストの一部として含めたりすることができます。

このモジュールによって提供される最新のインターフェースは、バイトのようなオブジェクトをASCIIバイトにエンコードし、バイトのようなオブジェクトまたはASCIIを含む文字列をバイトにデコードします。 RFC 3548で定義されている次のbase-64アルファベット(通常、URLおよびファイルシステムセーフ)がサポートされています。

Pythonを使用したBase64データエンコーディング

最新のインターフェースは-

を提供します

base64.b64encode(): Base64を使用してバイトのようなオブジェクトをエンコードし、エンコードされたバイトを返します。

base64.b64decode(): Base64でエンコードされたバイトのようなオブジェクトまたはASCII文字列をデコードし、デコードされたバイトを返します。

bse64モジュールのb64encode()およびbase64desode()関数を示すために、最初にPython文字列をエンコードしてみましょう。

>>> import base64
>>> string = 'Python programming'
>>> enc_string = string.encode()
>>> enc_string
b'Python programming'

このバイトオブジェクトは、b64encode()関数を使用してエンコードされます

>>> b64_estring = base64.b64encode(enc_string)
>>> b64_estring
b'UHl0aG9uIHByb2dyYW1taW5n'

decode()関数を使用して、このバイトオブジェクトから文字列を取得できます。

>>> dec_string = b64_estring.decode()
>>> dec_string
'UHl0aG9uIHByb2dyYW1taW5n'

encode()関数はバイトオブジェクトを返します

>>> b1 = dec_string.encode()
>>> b1
b'UHl0aG9uIHByb2dyYW1taW5n'

b64decode()関数を使用してデコードするには-

>>> d = base64.b64decode(b1)
>>> d
b'Python programming'

最後に、上記のバイトオブジェクトをデコードして元の文字列を取得します

>>> originalstring = d.decode()
>>> originalstring
'Python programming'

base64アルファベットは+と/を使用できます。URLで使用する場合は、これらの文字を置き換えるために代替エンコーディングを使用する必要があります。

urlsafe_b64encode(): URLおよびfilesystemsafeアルファベットを使用して、バイトのようなオブジェクトをエンコードします。これは、標準のBase64アルファベットの代わりに+および_の代わりに-を置き換え、エンコードされたバイトを返します。

urlsafe_b64decode(): URLとファイルシステムに安全なアルファベットを使用してバイトのようなオブジェクトまたはASCII文字列をデコードします。これは、標準のBase64アルファベットの代わりに+と_を使用し、デコードされたバイトを返します。

従来のインターフェースは、ファイルオブジェクトをエンコードおよびデコードするための関数を提供します-

base64.encode(input、output): バイナリ入力ファイルの内容をエンコードし、結果のbase64エンコードデータを出力ファイルに書き込みます。入力と出力はファイルオブジェクトである必要があります。 input.read()が空のバイトオブジェクトを返すまで、inputが読み取られます。

base64.decode(input、output): バイナリ入力ファイルの内容をデコードし、結果のバイナリデータを出力ファイルに書き込みます。入力と出力はファイルオブジェクトである必要があります。 input.readline()が空のバイトオブジェクトを返すまで、入力が読み取られます。

まず、「wb」モードを使用してファイルを作成します

>>> f1 = open('file.txt','wb')
>>> f1.write('Simple is better than complex'.encode())
>>> f1.close()
>

次に、base64.encodeメソッドを使用してファイルをエンコードします。

>>> f1 = open('file.txt','rb')
>>> f2 = open('file.dat','wb')
>>> base64.encode(f1,f2)
>>> f1.close()
>>> f2.close()

fil.datは、メモ帳で開くと次のコンテンツを表示します

U2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXg=

filenew.txtのfile.datをデコードするには、decode()関数を使用します

>>> f1 = open('file.dat','rb')
>>> f2 = open('filenew.txt','wb')
>>> base64.decode(f1,f2)
>>> f1.close()
>>> f2.close()

元のテキストはfilenew.txtに表示されるはずです


  1. Pythonを使用した画像ベースのステガノグラフィ?

    ステガノグラフィは、舞台裏で情報を隠す技術です。これは、データの暗号化(SHA1、MD5などのさまざまなアルゴリズムによる)に焦点を当てた暗号化とは異なり、ステガノグラフィは、別のファイル、画像、メッセージ、またはビデオ内にデータ(データはファイル、画像、メッセージ、またはビデオ)を隠すことに焦点を当てています。魅力を避けるため。 そのため、ここでは、画像の外観に目立った変化を与えることなく、画像の背後にある情報を非表示にする単純なPythonプログラムを作成しようとします。プログラムには2つの主要な部分があります。1つは画像ファイルから秘密情報を抽出できるデコード機能で、もう1つは秘密メッ

  2. Pythonを使用したWebサイトブロッカー

    大規模なIT企業で働いている場合は、その2つのWebサイト、特にFacebook、YouTube、Instagramなどのソーシャルネットワーキングサイトがブロックされていることに気付くかもしれません。 サードパーティのアプリケーションを使用して特定のWebサイトをブロックする代わりに、選択したWebサイトをブロックする独自のカスタムアプリケーションを開発できます。PythonでWebサイトブロッカーを開発することもそれほど難しくありません。それが私たちがやろうとしていることです-私たちが望むウェブサイトをブロックするPythonスクリプトを開発します。 前提条件: Python3.xが