You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python对比文件MD5与病毒库MD5始终返回clear的问题咨询

错误原因
  • 类型与结构不匹配:readlines()返回的是包含文件所有行的列表,你直接拿整个列表和hexdigest()生成的字符串类型哈希值做相等判断,永远不可能成立。
  • 文件打开模式错误:你的viruslist.txt是存储MD5字符串的文本文件,用rb二进制模式读取得到的是bytes类型数据,和字符串类型的哈希值类型不统一,无法匹配。
  • 未处理行尾换行符:即便是单独取病毒库的每一行内容,readlines()读出的每行末尾默认会携带\n/\r\n换行符,不做去除处理的话即使哈希值内容一致也会匹配失败。
  • 未正确关闭文件:代码中打开的两个文件对象都没有执行关闭操作,长时间运行可能会出现资源泄漏问题,推荐使用with上下文管理器自动处理文件关闭。
修正后的代码
import hashlib

# 计算目标文件的MD5哈希
md5_hash = hashlib.md5()
with open('C:/Users/User/Desktop/irustesting/eicar.com','rb') as a_file:
    content = a_file.read()
md5_hash.update(content)
digest = md5_hash.hexdigest()
print(f"目标文件哈希:{digest}")

# 读取病毒库并比对
virus_found = False
with open('C:/FYP/SecuCOM2022/viruslist.txt','r', encoding='utf-8') as viruslist:
    for line in viruslist:
        # 去除每行首尾的空白字符(换行符、空格等)
        virus_hash = line.strip()
        if virus_hash == digest:
            virus_found = True
            break

print("detected" if virus_found else "clear")

内容的提问来源于stack exchange,提问作者Jun Jie Ong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:15:04