gpt4 book ai didi

javascript - 计算 sha256 忽略元数据 - Javascript

转载 作者:行者123 更新时间:2023-12-03 01:41:42 27 4
gpt4 key购买 nike

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

问题是,对于某些类型的文件,即使文档没有实际更改,哈希值也会发生变化(我假设这是因为元数据更改)。

例如,一个 docx 格式的空 Word 文档给出了

 hash = 1bcf93...

如果用户打开文档并关闭它,哈希值就会发生变化,而我不希望这样。

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

我使用“fs”解析文件并使用“js-sha256”计算哈希值,即 FileReader.ReadAsBinaryString() 然后使用 sha256() .

最佳答案

一般来说,如果任何单个字节具有不同的值,无论该字节多么不相关,加密哈希都会产生不同的哈希。这就是哈希的全部意义。

根据您的具体要求,它可能会也可能不会足够接近。

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

如果您需要比这更微妙的东西(例如“此文档是否有任何用户可见更改),那么精确定义哪些部分需要散列以及哪些部分应该散列将变得非常困难”不会,这意味着您将会弄错,这可能会很糟糕(或者也许错误在您的要求中并不是什么大问题?)

关于javascript - 计算 sha256 忽略元数据 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50817722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com