프로그래밍/Python

[Python] "Unicode-objects must be encoded before hashing" 오류 대처법

채윤아빠 2021. 2. 2. 13:31
728x90
반응형

hashlib 패키지의 md5() 함수를 이용하여 문자열에 대한 해쉬값을 구하는 예제입니다.

import hashlib

text = 'asdf'
enc = hashlib.md5()
enc.update(text)
encText = enc.hexdigest()

print(encText)

그러나, 실행하면 다음과 같은 오류가 발생하였습니다.

Traceback (most recent call last):
  File "d:\Dev\Python\Test\hello.py", line 8, in 
    enc.update(text)
TypeError: Unicode-objects must be encoded before hashing

MD5 해쉬값을 구하기 위해서, update() 함수에 전달해야할 데이터는 byte array이어야 하는데, Unicode 문자열을 넘겨주어 발생한 오류입니다.


유니코드 문자열을 encode('utf-8') 함수로 변환하여 전달하면 오류가 해결됩니다.

import hashlib

text = 'asdf'
enc = hashlib.md5()
enc.update(text.encode('utf-8'))
encText = enc.hexdigest()

print(encText)

# result
# 912ec803b2ce49e4a541068d495ab570

참고자료