Python에서 base64인코딩(encoding) 또는 디코딩(decoding) 하는 방법에 대하여 알아봅니다.



# Python base64 변환, 인코딩 디코딩 방법
Python을 사용하는 경우 base64로 인코딩하거나 반대로 디코딩이 필요할 수 있습니다. 예를들어 인증 및 로그인에 jwt나 토큰을 사용한다면 값을 그냥 전달하지 않고 base64로 인코딩하여 전달하는 방법이 사용됩니다.



! Python base64 값을 디코딩(decoding)하기
아래는 전달 받은 값이 base64인 경우 이 값을 다시 문자열로 디코딩하여 사용하는 방법입니다. 먼저 base64를 사용하기 위해서는 모듈을 추가합니다.
import base64

이제 base64가 추가되어 사용이 가능합니다. 이제 변수 sitename에 'webisfree'를 선언하고 이 값을 base64로 변환해도록 하겠습니다.
sitename = 'webisfree'
sitename_bytes = sitename .encode('ascii')
sitename_base64 = base64.b64encode(sitename_bytes)
sitename_base64_str = sitename_base64.decode('ascii')

위의 변환 과정을 보면 아래와 같이 진행되었습니다.

1. 문자열을 bytes 타입으로 인코딩 변환
// base64로 변환하기 위해서는 bytes 타입 변환이 필요함
2. bytes 타입을 base64로 다시 변환
3. base64 타입의 bytest 타입을 디코딩

이제 base64로 변환 후 문자열로 변환한 과정이 끝났습니다. 출력해보면 아래와 같이 나타납니다.
> print(sitename_base64_str)
d2ViaXNmcmVl



! base64를 디코딩(decoding)하는 방법
이제 위와 같이 base64의 값을 다시 디코딩하여 사용하는 방법을 알아봅니다. decoding 방법은 아래와 같습니다.
sitename_base64_str  = 'd2ViaXNmcmVl'
sitename_bytes = base64.b64decode(sitename_base64_str )
sitename = sitename_bytes .decode('ascii')

base64 타입의 디코딩이 모두 완료되었습니다. 변환 순서는 위의 인코딩의 역순입니다. 값이 잘 변경되었는지 출력해보면 아래와 같습니다.
print(sitename)

// 출력결과
webisfree

여기까지 Python에서 base64를 사용하는 방법을 알아보았습니다. 중요한 부분은 bas64로 인코딩, 디코딩 하려면 문자열을 그래도 변환할 수 없고 bytes 타입으로 인코딩, 디코딩하는 과정이 선행되어야 한다는 점입니다.