2017-01-19 3 views
1

사전에서 단어를 읽고, md5 해시를 생성하고, 지정된 해시와 비교하는 파이썬 프로그램을 만들려고합니다. 내가 파일에서 읽지 않은 단어의 두 해시 비교할 때파일에서 단어의 md5 해시가 문자열의 해시와 일치하지 않는 이유는 무엇입니까?

모든 것이 잘 작동 :

if hashlib.md5(b"string").hexdigest() == "b45cffe084dd3d20d928bee85e7b0f21": 
    print("Equal!") 

을하지만을 나는 파일에서 라인별로 단어 라인의 해시를 읽을 때 단어가 다릅니다. 코드는 다음과 같습니다.

f = open('short.txt', 'r') 

stringHash = 'b45cffe084dd3d20d928bee85e7b0f21' 

for line in f: 

    if stringHash == hashlib.md5(line.encode('utf_8')).hexdigest(): 
     print("Found it! Password: %s" % line) 

감사합니다.

답변

4

줄 단위 파일 반복자을 포함한 전체 줄 을 산출합니다.

코드에는 줄의 줄 종결자가 포함됩니다.

line.encode('utf_8').rstrip() 올바른 결과가 나타납니다.

rstrip() 문자열이 (공란으로) 공백으로 끝나는 경우 오류가 발생합니다. 이 경우, 단지 수행 파일 (윈도우에 문제가되지 않습니다)

(그리고 rstrip가하는 유지 수 텍스트 유닉스 모드 가능 \r (캐리지 리턴)에서 열려

line.encode('utf_8').rstrip('\r\n') 

경우 '\ r \ n'문자열을 제거하지 말고 각각 \r 또는/및 n이 끝나면 str.split이 아닙니다.

+0

효과가 있습니다. 고마워요! ;) –

+1

다음 대답을 수락 할 수 있습니다 : http://stackoverflow.com/help/someone-answers –