打破哈希

Breakng the hash

我必须破解 4 个哈希码并找到它们的编号。但是我的代码不工作

这些是哈希码(在 csv 文件中):

javad :f478525457dcd5ec6223e52bd3df32d1edb600275e18d6435cdeb3ef2294e8de
milad : 297219e7de424bb52c040e7a2cbbd9024f7af18e283894fe59ca6abc0313c3c4
tahmine : 6621ead3c9ec19dfbd65ca799cc387320c1f22ac0c6b3beaae9de7ef190668c4
niloofar : 26d72e99775e03d2501416c6f402c265e628b7d02eee17a7671563c32e0cd9a3

我的代码:

import hashlib
import itertools as it
import csv
from typing import Dict
number=[0,1,2,3,4,5,6,7,8,9]
code = hashlib.sha256()
passwords = list(it.permutations(number, 4))

with open('passwords.csv', newline='') as theFile:
    reader = csv.reader(theFile)
    

passdic = dict()
# hpass is hash password
for hpass in passwords :
    
    encoded_hpass = ''.join(map(str, hpass)).encode('ascii')
    
    code = hashlib.sha256()
    code.update(encoded_hpass)

    passdic[encoded_hpass] = code.digest()
    
    for row in theFile :
        for key, value in row.items():
            passdic[key].append(value)

我的结果是:

'C:\Users\Parsa\AppData\Local\Programs\Python\Python38-32\python.exe' 'c:\Users\Parsa\.vscode\extensions\ms-python.python-2021.12.1559732655\pythonFiles\lib\python\debugpy\launcher' '3262' '--' 'c:\Users\Parsa\Desktop\project\hash breaker.py'
Traceback (most recent call last):
  File "c:\Users\Parsa\Desktop\project\hash breaker.py", line 24, in <module>
    for row in theFile :
ValueError: I/O operation on closed file.

您正在尝试从一个关闭的文件中读取,这是不可能的。

我不知道你的代码应该做什么,但这里是不合逻辑的部分:

这将打开文件并将其解析为 CSV

with open('passwords.csv', newline='') as theFile:
    reader = csv.reader(theFile)

那你以后运行:

    for row in theFile :
        for key, value in row.items():

但是现在,您在 with 块之外并且文件已关闭。

我猜你应该用 reader 代替 theFile。如果您真的打算遍历文件的原始行,则需要在 with open 语句中再次包装循环。