[Python] Hash 암호화 md5와 바이너리 구조체 base64를 다루는 방법


Development note/Python  2020. 4. 2. 17:38

안녕하세요. 명월입니다.


이 글은 Python에서 Hash 암호화 md5와 바이너리 구조체 base64를 다루는 방법에 대한 글입니다.

md5

프로그램을 다루다 보면 데이터를 암호화해서 다루어 할 때가 많이 있습니다. 대표적인게 패스워드가 있겠습니다.

이 패스워드는 노출이 되면 안되는 것으로 데이터 베이스를 관리하는 개발자의 경우도 그 값을 확인해서는 안됩니다. 그러기 위해서는 복호화가 불가능한 데이터를 다루어야 하는데 그것이 md5입니다.

Python으로도 웹 환경을 만들 수 있으니 필요하지만 그것보다 Python은 미들 웨어의 성격으로도 많이 사용되니 프로그램 간에 송수신할 때 사용할 수도 있습니다.

# 해쉬 모듈
import hashlib;
# 문자 입력
text = 'nowonbun';
# utf8형식의 binary로 변환
binary = text.encode('utf-8');
# hash 모듈에서 md5를 취득
enc = hashlib.md5();
# binary를 입력
enc.update(binary);
# md5 데이터를 취득
ret = enc.hexdigest();
# 콘솔 출력
print(ret);

md5의 암호화된 코드는 복호화가 되지 않습니다. 패스워드등으로 사용하려면 이 암호화된 코드를 비교해서 사용하면 됩니다.

참조 - https://docs.python.org/3/library/hashlib.html

base64

base64의 경우는 바이너리 데이터를 ascii코드로 변환하는 것입니다. 작게는 유니코드로 되어 있는 텍스트 데이터에서 image 데이터까지 base64로 변환이 가능합니다.

# base64 모듈
import base64;
# 이미지를 읽어온다.
with open("c:\\python\\nowonbuntistory.png", "rb") as handle:
  # 바이너리로 변환한다.
  binary = handle.read();
# 바이너리 데이터를 base64로 암호화 한다.
data = base64.b64encode(binary);
# base64로 변환된 데이터를 출력한다.
with open("c:\\python\\base64.txt", "wb") as handle:
  handle.write(data);

저는 위의 이미지를 가져와서 base64로 변환하는 것입니다.

binary가 꽤 크기 때문에 콘솔 출력보다는 파일로 출력했습니다.

이미지 형식의 데이터를 base64 암호화하여 ascii코드로 된 String 데이터로 출력이 되었습니다.


다시 이 텍스트 데이터를 읽어서 base64 복호화를 해서 Image로 출력하겠습니다.

# base64 모듈
import base64;
# base64코드 텍스트를 읽어온다.
with open("c:\\python\\base64.txt", "rb") as handle:
  # binary 형식으로 읽어온다.
  data = handle.read();
# binary 데이터를 base64로 복호화 한다.
image = base64.b64decode(data);
# binary타입으로 파일를 작성한다.
with open("c:\\python\\result.png", "wb") as handle:
  # 파일 작성
  handle.write(image);

result.png 파일로 변환했습니다.

결과를 확인하면 result.png 파일로 작성된 것을 확인할 수 있습니다.

참조 - https://docs.python.org/3/library/base64.html


여기까지 Python에서 Hash 암호화 md5와 바이너리 구조체 base64를 다루는 방법에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.