我正在做一个哈希验证项目,在我存储哈希并想要验证它后,在我根据新哈希检查它后它返回 false



我创建了一个哈希,并将其存储在.txt文件中(稍后将对其进行加密(,但当我创建一个新的哈希并对照存储的哈希进行检查时,即使哈希完全相同,它也会返回false。帮助相关代码:`

def testHash(expectedHash, testHash):
try:
if expectedHash == testHash:
return True
else: 
return False
except Exception as err:
print("Error, unkonwn if valid hash.")
print(f"Error: {err}")
return False

`以下是存储哈希的代码:

def storeHash(hash):
stored_hashes = open("storedHashes.txt", "a")
stored_hashes.write(hash+"n")
stored_hashes.close()

下面是获取存储哈希的代码:

def getHash(index):
stored_hashes = open("storedHashes.txt", "r+")
read_hash = stored_hashes.readlines(index)
clean_read_hash = ' '.join(read_hash) #required to remove the [] and n
return clean_read_hash

注意:它不会返回任何错误,但也不会返回True。完整的代码可以在这里找到:https://pastebin.com/2XpbmXaP密码:hashVerify

  • 我知道第18行的文件消耗是.hs,这是一条导致noeware的旁道,应该是.txt
  • 有趣的小事实是,Windows和其他操作系统允许任何文件扩展名,并且只使用后面的东西。如果他们不知道它是什么类型
  • 注意:testFile的内容是";散列测试">

很难说,因为您只定义了函数,而没有显示调用它们的逻辑。但看起来您只需要修复对stored_hashes.readlines的呼叫。将stored_hashes.readlines(index)更改为stored_hashes.readlines()[index];如注释中所述,stored_hashes.readlines接受的参数(顺便说一句,它返回一个列表(不是列表的索引,而是允许读取的字符总数。这意味着,与您当前的代码相比,您总是在比较";测试散列";添加到文本文件中每个哈希的列表中。

最新更新