33

Хуёвое хеширование

Что такое хеширование, соль и перец на хуёвых примерах для девочек.

Представь, что у тебя есть несколько знакомых парней и тебе очень хотелось бы знать, у кого из них самый большой хуй. Ты девочка приличная, поэтому, конечно же, не будешь спрашивать у каждого точную длину (height, h) и толщину (width, w) в сантиметрах. Вместо этого, ты попросишь каждого измерить свой хуй самостоятельно и прислать тебе произведение двух чисел (умножить одно на другое, типа 25 * 10 = 250). Это одно число не есть размер само по себе, однако два одинаковых хуя всегда дадут одинаковое число. Также, что важно для тебя, число это растёт вместе с размерами хуя. По сути, ты только что ввела простейшую хеш-функцию. Назовём её XYI-8, в надежде, что любое из возможных произведений можно уместить в 8 бит в двоичном представлении (десятичные числа от 0 до 255).

XYI-8(w, h) = w * h

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

Скажем прямо, функция XYI-8 достаточно хуёвая. А именно, имеет два существенных недостатка.

Во-первых, она довольно легко обратима - ты можешь с точностью сказать, хуи каких размеров могут дать значение XYI-8 = 100 или XYI-8 = 200. Что может поставить обладателя хуя в неловкое положение.

Во-вторых, как можно легко заметить, XYI-8(10, 2) = XYI-8(20, 1) = 20. Такая ситуация называется коллизией хеш-функции и при сравнении хуёв может привести к сюрпризам, как приятным, так и не очень.

Причиной второй проблемы является простота функции XYI-8. Вероятность коллизии можно снизить, скажем, дополнительно прибавляя к произведению толщину хуя. В нашем примере, возможно, коллизий можно было бы избежать и полностью, подобрав подходящий алгоритм. Однако, если брать размеры хуя в миллиметрах (а у некоторых, возможно и в сантиметрах, прости господи) - то результат не влезет в 8 бит. Если мы достаточно умны, то сможем придумать такую функцию, которая и в этом случае будет давать значения строго в пределах 8 бит - например, мы можем использовать формулу XYI-8(w, h) = 255 / (w * h), предполагая, что деление целочисленное. Но, как несложно заметить, все хуи, больше некоторого размера, будут приводить к коллизии (значение 0). Хороший алгоритм может снизить вероятность коллизии, но если числа на входе слишком большие - они не влезут в нашу 8-битную хеш-функцию, как ни запихивай.

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

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

Такой взлом 👩‍💻 называется brute force, брутфорс, перебор. Попадание в цель здесь - вопрос времени. Ускорить процесс могут т.н. радужные 🏳️‍🌈 таблицы - значения хеш функции для наиболее распространённых размеров хуя, вычисленные заранее.

Вот тут-то нам на помощь и спешат соль 🧂 с перцем 🌶️.

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

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

Однако, если все парни будут использовать одно и то же число, которое набито, скажем, на ягодице их общей подружки, то тебе придётся взламывать жопку этой подружки, поскольку на парнях уже ничего не написано, а прямого доступа к хуям всё еще нет. Такое число называется перцем 🌶️.

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

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

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

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

Более хуёвого способа потратить несколько часов я не нашёл.
Спасибо за внимание.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества