Как хеширование помогает защитить важные данные.

За прошедшие годы технологии произвели революцию в нашей повседневной жизни и создали удивительные ресурсы, из которых мы можем получить полезную информацию, которая у нас под рукой, что делает нашу жизнь быстрее и проще. Мы можем получить почти любую информацию из Интернета за доли секунды. Все мы знакомы с аутентификацией пользователя перед получением каких-либо данных / информации или обновлением ваших данных на таких веб-сайтах, как Facebook, Twitter, StackOverflow и многое другое, где вы аутентифицируете себя и получаете доступ к данным.

Но как вы аутентифицировать себя? Просто обойдя имя пользователя и пароль, вы можете войти в свою учетную запись и получить доступ к данным, верно? Теперь возникает вопрос: насколько безопасны ваши данные?

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

Здесь на сцену выходит хеширование. Большинство компаний используют множество различных методов и алгоритмов для защиты наших паролей. Поговорим о хешировании.

Что такое хеширование?

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

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

Paytm - yqegdmvosuiiaycbghjhtslkaiu

Теперь предположим, что мы используем один и тот же пароль для наших социальных сетей, таких как Facebook, Twitter, такое же хеш-значение для нашего пароля будет сохранено в центрах обработки данных. если хакер украдет ваш пароль от центра обработки данных, есть вероятность, что обе ваши учетные записи могут быть взломаны. Недостатком хеширования является то, что оно генерирует одно и то же значение хеш-функции, если мы используем один и тот же пароль для разных учетных записей. Здесь на сцену выходит алгоритм соления.

Что такое соление?

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

Соль - это случайные данные, которые используются в качестве дополнительных входных данных, которые хешируют данные. Чтобы упростить задачу, возьмем тот же пример - мы видели хэш-значение строки Paytm выше . Итак, Salting - это не что иное, как случайные данные, добавляемые к хеш-значению.

Paytm- 8199F17BABFE2A8818ACD86BB39E9E548C479A1B

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

Чтобы лучше понять хеширование, рассмотрим пример кода, в который мы добавляем строковый пароль, и этот пароль будет преобразован в хеш с помощью bcrypt Библиотека.

Что такое bcrypt?

bcrypt - это библиотека узлов, хэширующая пароли. Вы можете прочитать о bcrypt в Википедии.

Https://en.wikipedia.org/wiki/Bcrypt

Вам необходимо установить эту библиотеку через NPM. Используйте следующую команду для установки bcrypt.

npm install bcrypt --save

В следующем примере показан код для хеширования строкового значения с помощью bcrypt.

На консоли вы получите следующий вывод.

Если мы наблюдаем вывод пароля на рис. 2, мы получаем три символа $, которые делят все хеш-значение на 3 группы. Давайте разбираться по порядку.

  1. 2 миллиарда долларов определяет версию алгоритма bcrypt.
  2. 10 долларов 10 - это коэффициент стоимости (раунды соли), который мы передаем в приведенном выше примере кода, то есть bcrypt.genSalt (10) ;. если мы добавим 15 внутри скобок, то получится 15-й раунд соли для генерации случайных данных соли.
  3. Третья часть - это первые 22 символа после $, представляющие собой строку соли.

Остальные символы - это хешированный пароль.

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

Вы также можете воспользоваться решением StackOverflow -
см. Https://stackoverflow.com/questions/13023361/how-does-node-bcrypt-js-compare-hashed-and-plaintext-passwords-without- the-salt / 64457340 # 64457340

Заключение

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

Продолжайте читать и продолжайте учиться !!!