Python/Python 모듈탐구

[Python] - 모듈탐구 base64 - == =

base64라는 인코딩 방식을 들어본 적이 있는가? 컴퓨터 분야에서 상당히 많이 쓰이는 인코딩 방식이넫, 이진 파일들을 문자 코드에 영향을 받지 않는 64개의 ASCII를 사용하여 일련의 문자열로 변환하는 인코딩 방식이다. 이와 비슷하게 base32, base 16 방식도 존재하고, ASCII 문자 자체가 128개가 되지 않기 때문에 base128은 없는 방식이다.(대신 귀 여운 8 5를준 비했습니다.) 특수한 규약으로는 base64로 인코딩 된 문자는 = 혹은 ==으로 끝이난 다는 점이다. 모듈 탐구 시간, 오늘은 이 base인코딩을 다루는 base64 모듈을 알아보도록 하자


base64모듈에서 사용되는 함수들은 전부 base64 클래스의 클래스 함수이다.

 

부호기 - ENCODER

1. base64.b64encode(s) : 바이트 객체 s를 받아 인코딩 된 byte를 반환한다.

2. base64.standard_b64encode(s) : 바이트 객체 s를 받아 표준 base64알파벡으로 인코딩 된 byte를 반환한다.

3. base64.urlsafe_b64encode(s) : 바이트 객체 s를 받아 url에서 사용 가능한 base64인 코딩된 byte를 반환한다.

4. base64.b32encode(s) : 바이트 객체 s를 받아 base32로 인코딩 된 byte를 반환한다.

5. base64.b16encode(s) : 바이트 객체 s를 받아 base 16으로 인코딩 된 byte를 반환한다.

6. base64.a85encode(s) : 바이트 객체 s를 받아 Ascii85를 사용해 인코딩 된 byte를 반환한다.

7. base64.b85encode(s) : 바이트 객체 s를 받아 base85를 사용해 인코딩 된 byte를 반환한다.

8. base64.encode(input,output) : input, output은 file객체여야 한다. input의 내용을 base64로 인코딩하여 output에 쓴다.

9. base64.encodebytes(s) : 바이트객체 s를 받아 base64로 인코딩하고, 76바이트마다 개행(b"\n")을 포함하여 결과를 반환한다.

 

복호기 - DECODER

1. base64.b64decode(s) : 바이트 객체 s를 받아 인코딩 된 byte를 반환한다.

2. base64.standard_b64decode(s) : 바이트 객체 s를 받아 표준 base64알파벡으로 인코딩 된 byte를 반환한다.

3. base64.urlsafe_b64decode(s) : 바이트 객체 s를 받아 url에서 사용 가능한 base64인 코딩된 byte를 반환한다.

4. base64.b32decode(s) : 바이트 객체 s를 받아 base32로 인코딩 된 byte를 반환한다.

5. base64.b16decode(s) : 바이트 객체 s를 받아 base 16으로 인코딩 된 byte를 반환한다.

6. base64.a85decode(s) : 바이트 객체 s를 받아 Ascii85를 사용해 인코딩 된 byte를 반환한다.

7. base64.b85decode(s) : 바이트 객체 s를 받아 base85를 사용해 인코딩 된 byte를 반환한다.

8. base64.decode(input,output) : input, output은 file객체여야 한다. input의 내용을 base64로 인코딩하여 output에 쓴다.

9. base64.decodebytes(s) : 바이트객체 s를 받아 base64로 인코딩하고, 76바이트마다 개행(b"\n")을 포함하여 결과를 반환한다.

 

코드 예시

base64.encode, base64.decode를 제외한 모든 코드의 사용이 동일하여 일반 문자열 strs가 base64로 encode > decode 되는 순서의 예시를 첨부한다.

>>> import base64
>>> strs = "나의 문자열 썸띵입니다,"
>>> strs = strs.encode()
>>> strs
b'\xeb\x82\x98\xec\x9d\x98 \xeb\xac\xb8\xec\x9e\x90\xec\x97\xb4 \xec\x8d\xb8\xeb\x9d\xb5\xec\x9e\x85\xeb\x8b\x88\xeb\x8b\xa4,'
>>> en = base64.b64encode(strs)
>>> print(en)
b'64KY7J2YIOusuOyekOyXtCDsjbjrnbXsnoXri4jri6Qs'
>>> de = base64.b64decode(en)
>>> print(de)
b'\xeb\x82\x98\xec\x9d\x98 \xeb\xac\xb8\xec\x9e\x90\xec\x97\xb4 \xec\x8d\xb8\xeb\x9d\xb5\xec\x9e\x85\xeb\x8b\x88\xeb\x8b\xa4,'

* 출처 : docs.python.org/ko/3/library/base64.html

 

base64 — Base16, Base32, Base64, Base85 데이터 인코딩 — Python 3.9.4 문서

base64 — Base16, Base32, Base64, Base85 데이터 인코딩 소스 코드: Lib/base64.py 이 모듈은 바이너리 데이터를 인쇄 가능한 ASCII 문자로 인코딩하고 이러한 인코딩을 다시 바이너리 데이터로 디코딩하는 함

docs.python.org


컴퓨터세상에 발을 들였으면, 인코딩 타입은 어느 분야에서든(DB, NETWORK, 웹 등등 진짜 어디서든) 사용된다. 그중 표준 인코딩 타입처럼 많이 사용되는 것이 base64이다. 이 모듈을 자유자재로 다룰 줄 알게 되면, 다른 분야에서 python을 사용하는 데에 많은 도움이 될 것이라고 확신한다.