计算sha256忽略元数据 - Javascript

时间:2018-06-12 12:52:04

标签: javascript hash metadata

我想跟踪任何类型文件的修改,并且我使用Javascript和 SHA256加密哈希函数。

问题在于,对于某些类型的文件,即使文档没有实际更改,哈希也会发生变化(由于元数据的变化,我假设它已经过了)。

例如,docx格式的空单词文档,例如

 hash = 1bcf93...

如果用户打开文档并将其关闭,则哈希值会发生变化,我不想这样做。

有没有办法计算哈希忽略所有文件的元数据?

我正在用&#f;'解析文件并使用' js-sha256'计算哈希值,即FileReader.ReadAsBinaryString()然后sha256()

1 个答案:

答案 0 :(得分:1)

通常,如果任何单个字节具有不同的值,加密哈希将产生不同的哈希值,无论该字节与该字节有多么无关。这就是哈希的重点。

根据您的具体要求,它可能会或可能无法足够接近。

如果您的要求是"此内容看起来是否相似,足以被认为是平等的#34;如果您对合法性的要求非常宽松,那么您可以尝试为所有输入和散列生成一个稍微稳定的文本表示(例如,提取doc文件的纯文本并丢弃所有格式和元数据)。

如果您需要更精细的内容(例如"此文档是否有任何用户可见的更改),那么很难准确定义哪些部分需要进行哈希处理和这不应该是,这意味着你弄错了哪些可能很糟糕(或者错误对你的要求不是很大?)