当前位置: 首页 > java >正文

基于python的哈希查表搜索特定文件

    Python有hashlib库,支持多种哈希算法,比如MD5、SHA1、SHA256等。通常SHA256比较安全,但MD5更快,但可能存在碰撞风险,得根据自己需求决定。

        下面以SHA256做例。

import hashlib
import os
from typing import Dict, Listdef calculate_file_hash(filepath: str, algorithm='sha256') -> str:"""计算文件的哈希值"""hasher = hashlib.new(algorithm)with open(filepath, 'rb') as f:while chunk := f.read(8192):hasher.update(chunk)return hasher.hexdigest()def build_hash_table(directory: str) -> Dict[str, List[str]]:"""构建目录文件的哈希映射表"""hash_table = {}for root, _, files in os.walk(directory):for filename in files:filepath = os.path.join(root, filename)try:file_hash = calculate_file_hash(filepath)hash_table.setdefault(file_hash, []).append(filepath)except (IOError, PermissionError):continuereturn hash_table# 使用示例
if __name__ == "__main__":target_dir = input("输入要扫描的目录:")target_hash = input("输入要查找的哈希值:").strip().lower()print("正在构建哈希表...")hash_map = build_hash_table(target_dir)if matches := hash_map.get(target_hash):print(f"找到 {len(matches)} 个匹配文件:")for path in matches:print(f"• {path}")else:print("未找到匹配文件")
    优化方向可存储程序运行的值,和使用argparse来接受命令行参数,或者直接通过input函数获取目录和哈希值。
http://www.xdnf.cn/news/3990.html

相关文章:

  • 【C/C++】各种概念联系及辨析
  • Cadence高速系统设计流程及工具使用
  • [C++] 小游戏 决战苍穹
  • 《Java 高并发程序设计》笔记
  • NSOperation深入解析:从使用到底层原理
  • 千锋教育Ansible自动化运维实战教程从入门到精通
  • 基于windows安装MySQL8.0.40
  • 2025 年最新树莓派 Pico 连接 ESP8266 模块实现 WiFi 通信、搭建 TCP 服务器实现数据交互详细教程
  • 【多线程】九、常见的锁 读者写者问题
  • 「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例
  • 【爬虫】微博热搜机
  • 网络原理 TCP/IP
  • 代码异味(Code Smell)识别与重构指南
  • [网安工具] 浏览器站点指纹识别插件 —— Wappalyzer · 使用手册
  • R004 -计算机硬件基础
  • 每日c/c++题 备战蓝桥杯(P1886 滑动窗口 /【模板】单调队列)
  • 使用Prometheus监控网站是否正常打开
  • Matlab实现基于CNN-GRU的锂电池SOH估计
  • 嵌入式学习笔记 - STM32 SRAM控制器FSMC
  • 从围棋到LabVIEW:快速入门与长期精通
  • Nacos源码—3.Nacos集群高可用分析二
  • Redis从入门到实战——实战篇(下)
  • Linux的时间同步服务器(附加详细实验案例)
  • 三十一、基于HMM的词性标注
  • 相同IP和端口的服务器ssh连接时出现异常
  • 【SaaS多租架构】数据隔离与性能平衡
  • chili3d笔记11 连接yolo python http.server 跨域请求 flask
  • Linux中web服务器的部署及优化
  • 使用OpenCV 和 Dlib 实现疲劳检测
  • 【macOS常用快捷键】