Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python을 사용한 Base64 데이터 인코딩

<시간/>

base64 모듈의 기능은 이진 데이터를 일반 텍스트 프로토콜을 사용한 전송에 적합한 ASCII 하위 집합으로 변환합니다.

인코딩 및 디코딩 기능은 Base16, Base32 및 Base64 알고리즘과 사실상의 표준 Ascii85 및 Base85 인코딩을 정의하는 RFC 3548의 사양을 구현합니다. RFC 3548 인코딩은 바이너리 데이터를 인코딩하는 데 적합하므로 이메일로 안전하게 보내거나 URL의 일부로 사용하거나 HTTP POST 요청의 일부로 포함할 수 있습니다.

이 모듈에서 제공하는 최신 인터페이스는 바이트열류 객체를 ASCII 바이트로 인코딩하고 바이트열류 객체 또는 ASCII를 포함하는 문자열을 바이트열로 디코딩합니다. RFC 3548(일반, URL 및 파일 시스템 안전)에 정의된 다음 base-64 알파벳이 지원됩니다.

Python을 사용한 Base64 데이터 인코딩

현대적인 인터페이스는 다음을 제공합니다 -

base64.b64encode(): Base64를 사용하여 바이트열류 객체를 인코딩하고 인코딩된 바이트를 반환합니다.

base64.b64decode(): Base64로 인코딩된 바이트열류 객체 또는 ASCII 문자열 s를 디코딩하고 디코딩된 바이트를 반환합니다.

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 및 파일 시스템 안전 알파벳을 사용하여 바이트열류 객체를 인코딩합니다. 이 알파벳은 표준 Base64 알파벳 대신 + 및 _를 대체하고 인코딩된 바이트를 반환합니다.

urlsafe_b64decode(): URL 및 파일 시스템 안전 알파벳을 사용하여 바이트열류 객체 또는 ASCII 문자열을 디코딩합니다. 이 알파벳은 표준 Base64 알파벳 대신에 + 및 _를 대체하고 디코딩된 바이트를 반환합니다.

레거시 인터페이스는 파일 개체를 인코딩 및 디코딩하는 기능을 제공합니다. -

base64.encode(입력, 출력): 이진 입력 파일의 내용을 인코딩하고 결과 base64 인코딩 데이터를 출력 파일에 씁니다. 입력 및 출력은 파일 개체여야 합니다. input.read()가 빈 바이트열 객체를 반환할 때까지 입력을 읽습니다.

base64.decode(입력, 출력): 바이너리 입력 파일의 내용을 디코딩하고 결과 바이너리 데이터를 출력 파일에 씁니다. 입력 및 출력은 파일 개체여야 합니다. 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에서 볼 수 있어야 합니다.