VBA Excel изменяет файл и сохраняет ту же контрольную сумму - PullRequest
0 голосов
/ 26 сентября 2019

Я видел разные способы создания контрольной суммы для какого-либо простого текстового файла, но я хотел бы иметь возможность изменить указанное содержимое файла, но в то же время сохранить уже известную (установленную) контрольную сумму, заполнив остальную часть файла необходимыми символами.Я понял эту идею, когда много лет назад нашел какое-то приложение (думаю, компьютер ATARI), способное сделать диск загрузочным после изменения его ID, если контрольная сумма загрузочного сектора составляет $ 1234.Можно ли добиться в VBA?Спасибо.

1 Ответ

3 голосов
/ 27 сентября 2019

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

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

То, что вы спрашиваете, в основном сводит на нет всю цель контрольной суммы .

Я неподумайте, что компьютер ATARI использовал хеширование SHA-1 (160 бит), не говоря уже о SHA-256 или SHA-512 (или 128-битном MD5), или любой другой широко используемый сегодня алгоритм.

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

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

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