Base64 인코딩, 디코딩

 

글. 수알치 오상문 

 

 Base64는 ASCII 문자열 기반으로 이진 값을 표현할 수 있는데 XML 포맷 등에서 활용된다.

다음은 파이썬에서 문자열을 Base64 구조로 바꾸거나 다시 원본 문자열 표현으로 변환시키는 예제이다.

 

[예제 1]
import base64

text = "abc한글韓國"

s1 = text.encode('utf-8')
s2 = text.encode('utf-8').decode('utf-8')
s3 = base64.b64encode(text.encode('utf-8'))  # str to Base64
s4 = base64.b64encode(text.encode('utf-8')).decode('utf-8') 
s5 = base64.b64decode(s4).decode('utf-8')

print("원문:", text)                                                          # abc한글韓國
print("text.encode('utf-8'):", s1)                                    # b'abc\xed\x95\x9c\xea\xb8\x80\xe9\x9f\x93\xe5\x9c\x8b'
print("text.encode('utf-8').decode('utf-8'):", s2)           # abc한글韓國
print("base64.b64encode(text.encode('utf-8')):", s3) # b'YWJj7ZWc6riA6Z+T5ZyL'

# str to Base64
print("s4 = base64.b64encode(text.encode('utf-8')).decode('utf-8'):", s4) # YWJj7ZWc6riA6Z+T5ZyL
# Base64 to str
print("base64.b64decode(s4).decode('utf-8'):", s5)  # abc한글韓國

 

[실행 결과]

원문: abc한글韓國
text.encode('utf-8'): b'abc\xed\x95\x9c\xea\xb8\x80\xe9\x9f\x93\xe5\x9c\x8b'
text.encode('utf-8').decode('utf-8'): abc한글韓國
base64.b64encode(text.encode('utf-8')): b'YWJj7ZWc6riA6Z+T5ZyL'
s4 = base64.b64encode(text.encode('utf-8')).decode('utf-8'): YWJj7ZWc6riA6Z+T5ZyL
base64.b64decode(s4).decode('utf-8'): abc한글韓國

 

 

[예제 2] 

import base64

sitename = 'my website'
sitename_bytes = sitename.encode('ascii')  # 영문인 경우 
sitename_base64 = base64.b64encode(sitename_bytes)
sitename_base64_str = sitename_base64.decode('ascii')

print(sitename)
print(sitename_bytes)
print(sitename_base64)
print(sitename_base64_str)

sitename_bytes = base64.b64decode(sitename_base64_str)
sitename = sitename_bytes .decode('ascii')

print(sitename_bytes)
print(sitename)

# ---------------------------------
sitename = 'My 웹사이트'
sitename_bytes = sitename.encode('UTF-8')  # 한글 포함된 경우
sitename_base64 = base64.b64encode(sitename_bytes)
sitename_base64_str = sitename_base64.decode('ascii')

 

print("-"*30)
print(sitename)
print(sitename_bytes)
print(sitename_base64)
print(sitename_base64_str)

sitename_bytes = base64.b64decode(sitename_base64_str)
sitename = sitename_bytes.decode('UTF-8')

print(sitename_bytes)
print(sitename)

 

[실행 결과]

my website
b'my website'
b'bXkgd2Vic2l0ZQ=='
bXkgd2Vic2l0ZQ==
b'my website'
my website

------------------------------
My 웹사이트
b'My \xec\x9b\xb9\xec\x82\xac\xec\x9d\xb4\xed\x8a\xb8'
b'TXkg7Ju57IKs7J207Yq4'
TXkg7Ju57IKs7J207Yq4
b'My \xec\x9b\xb9\xec\x82\xac\xec\x9d\xb4\xed\x8a\xb8'
My 웹사이트

반응형

+ Recent posts