Что такое шифрование?
Шифрование превращает читаемые данные в форму, которую можно восстановить только при наличии подходящего ключа. Оно защищает конфиденциальность при передаче и хранении данных. Хеширование и контрольная сумма решают другие задачи: их результат не расшифровывают обратно в исходный текст.
Как работает шифрование
Алгоритм получает открытый текст и ключ и создаёт шифротекст. Получатель использует соответствующий ключ для расшифрования. При симметричном шифровании стороны владеют одним общим секретом; при асимметричном используют пару открытого и закрытого ключей. Безопасность зависит от алгоритма, режима работы, качества ключей и их хранения. Один только факт «текст зашифрован» не говорит, насколько хорошо он защищён.
Хеш, контрольная сумма и шифр — разные вещи
Криптографическая хеш-функция выдаёт короткий отпечаток данных; исходное сообщение из него штатным способом не восстанавливают. Хеши применяют, например, для проверки целостности, но для хранения паролей нужны специальные алгоритмы с солью и настраиваемой стоимостью вычислений. CRC32 выявляет случайные ошибки передачи и не служит защитой от преднамеренной подмены. MD5 и SHA-1 не следует рекомендовать для новых задач, требующих стойкости к коллизиям: NIST объявил о переходе от SHA-1 к более стойким алгоритмам. Позиция NIST о SHA-1.
Что учитывать на практике
Для защиты соединения используют TLS, а для файлов — проверенные приложения и режимы шифрования с аутентификацией. Не отправляйте ключ вместе с зашифрованным файлом по тому же незащищённому каналу. В генераторе хешей можно вычислить хеш или контрольную сумму текста.
Пример: защита файла и проверка скачанного архива
Если нужно передать конфиденциальный файл коллеге, используйте проверенное приложение, которое шифрует данные с аутентификацией; пароль или ключ передайте отдельным защищённым способом. Получатель сможет восстановить содержимое только с подходящим ключом. Если же задача — убедиться, что скачанный архив совпадает с опубликованным разработчиком, сравните его хеш SHA-256 с хешем из надёжного источника. Хеш не скрывает содержимое архива. CRC32 пригодится для обнаружения случайного повреждения, но не подтвердит подлинность файла при злонамеренной подмене.
Даже хороший алгоритм не компенсирует слабый пароль, раскрытый ключ или заражённое устройство. Для новых систем выбирайте алгоритмы и протоколы с современной проверкой безопасности, а не собственную схему из нескольких преобразований текста. Кодирование Base64 тоже не является шифрованием: любой может вернуть исходные байты без ключа.
TLS 1.3 и защита соединения
В HTTPS шифрование — часть более широкого протокола: TLS согласует параметры, выполняет обмен ключами и проверяет сертификат сервера. Современный TLS 1.3 убрал ряд устаревших вариантов и сократил обычное рукопожатие. Подробный разбор — в статье о рукопожатии TLS 1.3. Наличие TLS защищает данные в пути до указанного узла, но само по себе не доказывает добросовестность сайта.