Сравнение двух текстов по хешу

Введите текст для хэширования.

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

Как проверить, совпадают ли два текста

  1. 1

    Захешируйте первый текст

    Вставьте первый текст, оставьте выбранным SHA-256 и вычислите. Скопируйте или запишите дайджест.

  2. 2

    Повторите со вторым текстом

    Замените текст на вторую версию, используя тот же алгоритм.

  3. 3

    Сравните дайджесты

    Если все 64 символа совпадают, тексты состоят из одинаковых байтов. Если отличается хотя бы один символ, отличаются и тексты.

  4. 4

    При необходимости сузьте поиск

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

Почему хеш даёт надёжное сравнение

Хорошая хеш-функция отправляет каждое различное входное значение в свой непредсказуемый дайджест. Для SHA-256 не известно способа найти два разных текста с одинаковым дайджестом, поэтому совпадение дайджестов означает совпадение содержимого для любых практических целей. Дайджесты также короткие, так что вместо страниц можно сравнивать 64 символа.

Пример

Текст SHA-256
hello 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

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

Что считается различием

Сравнение выполняется побайтово. Все следующие изменения меняют дайджест:

  • лишний пробел в конце строки;
  • перенос строки в конце текста;
  • другой вид апострофа или тире, который выглядит на экране так же;
  • буквы с диакритикой, введённые разными способами, например буква плюс отдельный знак ударения и один составной символ.

Если два текста выглядят одинаково, а дайджесты разные, вероятная причина именно в одном из этих невидимых отличий. Хеш текста с завершающим переносом строки и без него быстро покажет, в чём дело.

Выбор алгоритма

Используйте один и тот же алгоритм для обоих текстов. SHA-256, надёжный вариант по умолчанию. MD5 и SHA-1 тоже выявляют обычные отличия, но их не стоит применять, если кто-то может намеренно подобрать коллизию. CRC32 короче, но слабее для больших наборов данных.

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

Практический порядок действий

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

Если дайджесты различаются

Не предполагайте сразу, что содержимое неверно. Сначала проверьте обычные причины: скопированный текст может содержать завершающий пробел, другой стиль переноса строк или скрытый символ с веб-страницы или из текстового редактора. Захешируйте обе версии после одинаковой очистки. Если дайджесты всё равно различаются, разбейте каждый текст на абзацы, хешируйте их по одному и сравнивайте пары, пока не найдёте изменившийся.

Часто задаваемые вопросы

С SHA-256 или SHA-512, да, для любых практических целей. С MD5, SHA-1 или CRC32 совпадающие дайджесты, сильное свидетельство против случайных ошибок, но не против намеренной подделки.

Да. Те же строки в другом порядке дают другой дайджест, потому что байты расположены в другом порядке.

Нет. Он хеширует один текст за раз, а дайджесты вы сравниваете сами. Различия он не выделяет.

Да. Hello и hello имеют разные дайджесты. Если регистр не важен, сначала приведите оба текста к одному регистру.

Сопутствующие инструменты

Шифр из числа в букву

Преобразуйте числа в буквы и обратно по шифру A=1, B=2 (A1Z26) для головоломок, загадок и подсказок в квест-комнатах.

Генератор SSL-сертификатов

Создайте самоподписанный сертификат SSL/TLS и закрытый ключ RSA полностью в браузере. Свои Common Name, SAN и срок действия, экспорт в PEM.

Генератор ключей API случайного типа

Создавайте на сервере ключи API длиной 8–128 символов в формате hex, base64url или алфавитно-цифровом формате либо UUIDv4.

Кодировщик шифра Виженера

Шифруйте и дешифруйте сообщения классическим шифром Виженера с помощью ключевого слова. Сдвигает латинские буквы A-Z, сохраняя регистр, пробелы и пунктуацию.

Генератор MD5

Создайте хеш MD5 для любого текста или файла. Результат, 128-битное значение в шестнадцатеричном формате, вычисляемое полностью в вашем браузере.

Генератор хешей SHA1

Генерируйте хеши SHA-1 (40 шестнадцатеричных символов) из любого текстового ввода. Полезно для устаревших контрольных сумм, ID объектов git и неохранных проверок целостности.

Инструмент доступен на других языках

Руководства и сценарии использования