В чем сходство и различие?

В мире программирования есть такие термины, как шифрование и хеширование. Что это за вещи? Это просто способ сделать данные более безопасными, превратив исходные данные в закодированные данные. Например :

  1. От «abc» до «dhfhoiee».
  2. От «123kd» до «shfkjdf».
  3. и т. д.

Шифрование

Шифрование — это просто сообщение, обернутое соглашением между двумя сторонами. Одним из примеров шифрования является Cesar Cipher. Он создан Юлием Цезарем (римским полководцем) давным-давно. Он использовал его, когда хотел общаться с другими генералами, он хотел убедиться, что сообщение не будет перехвачено третьей стороной или врагами, поэтому он зашифровал сообщение. Это означает, что если кто-то завладел им, он не смог бы его расшифровать, если бы не знал, как он был зашифрован.

Пример шифра Цезаря:

Согласие с обеих сторон: клавиша Shift = 2

  1. Юлий отправляет сообщение: «Hello World»
  2. Зашифрованные данные будут: «Jgnnq Yqtnf», потому что каждое слово будет сдвинуто вперед на 2 (H становится J, e становится g и т. д.).
  3. Затем это сообщение «Jgnnq Yqtnf» было отправлено другим генералам.

Таким образом, когда другие генералы Юлия Цезаря получат зашифрованное сообщение (шифр), они смогут расшифровать зашифрованное сообщение потому что они знали, как сообщение было зашифровано (сдвинуто на 2).

  1. Генералы получают сообщение: «Jgnnq Yqtnf».
  2. Расшифрованные данные будут: «Hello World», потому что каждое слово будет сдвинуто назад на 2 (J становится H, g становится e и т. д.).

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

Хеширование

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

  1. Хэширование — это, по сути, математическая формула, которая позволяет нам превращать сообщения в хэш-код (случайные символы) с помощью некоторых функций/инструментов.
  2. В отличие от шифрования, результат хеширования намного сложнее и может быть длиннее.
  3. Когда мы используем одну и ту же хэш-функцию, независимо от того, какое сообщение вы помещаете в функцию, она всегда будет получать вывод с одинаковым количеством символов.
  4. Когда наше сообщение будет изменено, хэш тоже будет изменен.
  5. Хеширование — это односторонняя функция. Вы не можете расшифровать хэш обратно в исходные данные.

Как это возможно? Почему мы не можем расшифровать хэш обратно в исходные данные? Вот действительно простой пример:

  1. Представьте хэш как множитель числа.
  2. 2 умножить на 4 будет 8.
  3. Итак, мы знали, что 2 и 4 — это коэффициент 8. Это легко, потому что это все еще небольшое число.
  4. Теперь, учитывая число 989438. Если мы хотим узнать, каков множитель числа 989438, мы должны просмотреть все числа ниже 989438, чтобы проверить, является ли оно множителем или нет. И это действительно сложно и займет много времени.

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

Но если мы хотим вернуться от хэша к исходному сообщению. Вы должны использовать грубую силу. Мы должны разделить его на каждое число ниже заданного числа, что для нас, людей, займет много времени, а для компьютеров — много энергии и вычислительных мощностей. Особенно, когда мы имеем дело с очень большим числом.

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

Попробуйте шифр Цезаря, здесь.

Попробуйте хеширование здесь.

Вот и все. Это сходства и различия между шифрованием и хэшированием. Надеюсь, это поможет!