首页 > 解决方案 > 读取 txt 文件中的 md5 哈希值并与文件的 md5 哈希值进行比较

问题描述

我是 python 新手。我正在尝试检测文件 md5 哈希的病毒。我有一个病毒 md5 哈希调用 viruslist 的列表,然后我想将 eicar.com 的 md5 与病毒列表中的 md5 哈希进行比较。它检测到然后将打印检测到。但是现在输出总是显示清楚,是我需要 readlines 还是其他?下面是我的编码。

import hashlib

md5_hash = hashlib.md5()

viruslist = open('C:/FYP/SecuCOM2022/viruslist.txt','rb')
virusinside = viruslist.readlines() 

a_file = 
open('C:/Users/User/Desktop/irustesting/eicar.com','rb')
content = a_file.read()
md5_hash.update(content)
digest = md5_hash.hexdigest()
print(digest)
virus="detected"
novirus="clear"
if virusinside == digest:
    print(virus)
else:
    print(novirus)

标签: python

解决方案


假设你的viruslist.txt样子

bc6e6f16b8a077ef5fbc8d59d0b931b9
2d9fd9fbccf64a485304d7596772f2b0
...

然后您可能需要进行以下更改。

  1. viruslist.txt使用 以文本模式打开viruslist = open('C:/FYP/SecuCOM2022/viruslist.txt','rt')。这是因为 的输出hashlib.md5().hexdigest()是字符串而不是字节。
  2. 去掉viruslist.txt. 例如virusinside = [l.rstrip() for l in viruslist].
  3. 使用in代替==和反转摘要的比较。例如,if digest in virusinside:

推荐阅读