Вычислить sha256 игнорируя метаданные - Javascript - PullRequest
0 голосов
/ 12 июня 2018

Я хочу отслеживать изменения любого типа файлов, и я использую Javascript и криптографическую функцию SHA256 .

Проблема в том, что для некоторых типов файлов, даже если в документе нет никаких реальных изменений, хэш изменяется (я предполагаю, что это из-за изменений метаданных).

Например, пустой документ слова в формате docx дает, скажем,

 hash = 1bcf93...

Если пользователь открывает документ и закрывает его, хэш изменяется, и я этого не хочу.

Есть ли способ вычисления хэша, игнорирующего метаданные для всех файлов?

Я анализирую файлы с помощью 'fs' и вычисляю хэш с помощью 'js-sha256', то есть FileReader.ReadAsBinaryString() изатем sha256().

1 Ответ

0 голосов
/ 12 июня 2018

Как правило, криптографический хеш будет создавать другой хеш, если какой-либо один байт имеет другое значение, независимо от того, насколько не важен этот байт.В этом весь смысл хэша.

В зависимости от ваших точных требований, он может или не сможет подобраться достаточно близко.

Если ваши требования "выглядит ли этот контент достаточно похожим насчитаться равным "с довольно слабыми требованиями законности, тогда вы можете попытаться создать несколько стабильное текстовое представление всех ваших входных данных и вместо этого хэшировать (например, извлечь чистый текст из вашего файла doc и отбросить все форматирование и метаданные).

Если вам нужно что-то более тонкое, чем это (например, «есть ли в этом документе какие-либо видимые для пользователя изменения), тогда будет невероятно трудно точно определить, какие части нужно хэшировать, а какие нет».t, что означает, что вы поймете неправильно, что может быть ужасно (или, возможно, ошибки не являются огромной проблемой в ваших требованиях?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...