Симметричное шифрование: один ключ
Один и тот же ключ шифрует и расшифровывает. Это быстро, поэтому так шифруют большие объёмы данных. Пример: алгоритм AES. Проблема одна: ключ нужно как-то передать собеседнику так, чтобы его не перехватили.
Асимметричное: пара ключей
У каждого есть пара: открытый ключ, который можно раздать всем, и закрытый, который хранится только у владельца. Зашифровать открытым может любой, расшифровать сможет только владелец закрытого. Так браузер договаривается о ключе с сайтом, которого видит впервые.
Хэш: отпечаток данных
Хэш-функция превращает любые данные в строку фиксированной длины. Из одних данных всегда получается один и тот же хэш, а обратно данные не восстановить. Поэтому нормальные сайты хранят не сам пароль, а его хэш: при входе сравнивают отпечатки.
Попробуй в Лаборатории: шифр меняется каждый раз, а хэш остаётся одинаковым.
Цифровая подпись
Автор подписывает данные своим закрытым ключом, а любой проверяет подпись открытым. Подпись доказывает две вещи: кто автор и что данные никто не менял по дороге. Так проверяют обновления программ.
Сквозное шифрование
Сообщения шифруются на устройстве отправителя и расшифровываются только у получателя. Сервер посередине видит лишь зашифрованные данные. Важно знать, где оно есть: например, в Telegram обычные чаты шифруются между тобой и сервером и хранятся в облаке, а сквозное шифрование есть только в «секретных чатах».
Шифр можно вернуть ключом, хэш вернуть нельзя. Подпись доказывает автора. Сквозное шифрование значит, что сервер не может прочитать переписку.