这个问题可能很常见,但由于我不知道与之相关的条款,我无法搜索它(除非Google将整个段落作为搜索查询接受)。
我有一个文件 - 可以是文本文件,MP3文件或视频片段,甚至是巨大的mkv文件。
我可以访问此文件,现在我必须以某种方式处理它,以便我获得某种值或唯一标识符...哈希,或者其他东西。我把它存放在某个地方。这个“哈希”必须很小 - 几个字节。它不应该是文件大小的一半!
稍后,当我再次收到文件时,我必须使用我在步骤1中获得的值来验证它是否是相同的原始文件。这次我将无法访问原始文件。我所拥有的只是第1步的价值。
如果第二个文件包含完全相同的数据 - 每个位 - 作为第一个文件(基本上是同一个文件),即使文件名,属性,位置等都已更改,该算法应返回true。
基本上我需要知道我是否正在处理同一个文件,即使它已移动,重命名并且所有属性都已更改 - 但是当不能同时访问这两个文件时。
这必须是OS或FileSystem独立的。
有没有办法实现这个目标?
答案 0 :(得分:1)
您正在寻找的是cryptographic hash algorithms。了解他们:
所有强大的语言和库都支持计算哈希值。
答案 1 :(得分:1)
你的困境很简单。每次处理文件时都要获取MD5(或任何算法可以产生单向散列)哈希值。
Here it is in simple steps:
Step 1: Load file stream into a byte array
Step 2: Obtain MD5 hash from byte array
Step 3: Check your db if it already contains hash.
Step 4: return false if not exist
Step 5: return true if found
Step 6: If not exist process file
Step 7: Save hash
答案 2 :(得分:0)
通过密钥( file-1(1,20,a), file-2(2,20,a))
比较两个文件使用排序卡,匹配的记录应从文件文件-2 移至 file-3(新文件)?