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
참고자료
- "Python ] Hex <-> String 쉽게 변환하기":https://2thet0p.tistory.com/67 ; encode("hex") / decode("hex")
'프로그래밍 > Python' 카테고리의 다른 글
[Python] os.mkdir() 폴더 생성시, "FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다" 오류 대처 (0) | 2021.04.09 |
---|---|
[python] len() 함수 vs count() 메소드 (0) | 2021.04.06 |
datetime 다루기 (날짜 연산 및 timezone) (0) | 2020.12.23 |
데이터 형 변환(type cast) : str, bool, int, float, chr (0) | 2020.12.11 |
list의 모든 문자열을 int 값으로 변경하기 (0) | 2020.12.10 |