2017-02-19 4 views
-1

안녕하세요 저는 Hashlib에 정말 새롭고 모든 파일을 디렉토리에 만들고 모든 MD5 해시 코드를 만드는 프로그램을 만들려고합니다. 나는 몇 시간 동안 그걸로 일해 왔고 그게 정말 짜증나. 여기에 내가 지금까지 코드를 가지고있다.MD5 디렉토리의 모든 파일을 해싱합니다.

import hashlib, os, sys 
for root, dirs,files in os.walk("C:\Users\Matt\AppData\NewFolder", topdown=True): 
    for name in files: 
     #print(os.path.join(root, name)) 
FileName = (os.path.join(root, name)) 

hasher = hashlib.md5() 
with open(str(FileName), 'rb') as afile: 
    buf = afile.read() 
    hasher.update(buf) 
print(hasher.hexdigest()) 

누군가가 그 좋은 것 좀 도와 기꺼이 것입니다 경우. 고맙습니다.

+1

게시 된 코드에 공백이 있습니까? 현재 코드의 문제점은 무엇입니까? 단일 파일을 해시하려고 했습니까? – osgx

+0

코드가 단일 파일에서 작동하지만 폴더의 모든 내용을 한 번에 해시하려고합니다. – Tyrell

+0

현재 상태에서이 코드는'IndentationError'를 생성합니다 –

답변

2

파일 읽기 및 해시 코드를 루프 본문 내부로 이동해야합니다.

import hashlib, os, sys 

for root, dirs,files in os.walk("C:\Users\Matt\AppData\NewFolder", topdown=True): 
    for name in files: 
     #print(os.path.join(root, name)) 
     FileName = (os.path.join(root, name)) 

     hasher = hashlib.md5() 
     with open(str(FileName), 'rb') as afile: 
      buf = afile.read() 
      hasher.update(buf) 
     print(hasher.hexdigest()) 
+0

오, 젠장, 그게 다행이라고 생각 했어. – Tyrell

+0

또한 MD5는이 시점에서 약한 것으로 간주되고 보안과 관련하여 사용해서는 안된다는 것을 명심하십시오. 더 나은 대안은 SHA-256입니다. – Scovetta