模糊哈希:原理、实现与应用
1. 模糊哈希简介
模糊哈希是一种用于文件比较和相似度检测的技术,在数字取证和信息安全领域有着广泛的应用。它的核心概念包括滚动哈希、基于文件大小计算的重置点以及传统哈希算法(如FNV算法)。滚动哈希用于识别文件中的边界,而传统哈希则用于对这些边界内的数据进行摘要。
2. 创建模糊哈希的代码实现
2.1 fuzz_file() 函数
该函数接受一个文件路径作为输入,并使用文件开头定义的常量来计算文件的模糊哈希签名。以下是函数的定义:
def fuzz_file(file_path):
"""
The fuzz_file function creates a fuzzy hash of a file
:param file_path (str): file to read.
:return (str): spamsum hash
"""
2.2 生成滚动哈希
在 fuzz_file()
函数内部,定义了一个嵌套函数 update_rolling_hash()
用于更新滚动哈希值。该函数接受两个参数:新字节 nb
和滚动哈希跟踪字典 rh
。
def update_rolling_hash(nb, rh):
"""
Update the