TGViewer
Артем Лещев | ИТ Артем Лещев | ИТ @asleshchev · 71 subscribers
Post #78 282
👨‍💻 Что такое хэширование пароля?

Участвую в конкурсе «Продолжи мысль» от @systems_education.

Пароли пользователей хранятся в базе данных не в открытом виде. Их принято хэшировать. Так, злоумышленник, получив доступ к БД, все равно не узнает точную комбинацию символов которую вводит пользователь.

Шифрование и хэширование — разные методы защиты информации. Первый подразумевает наличие ключа, которым можно расшифровать данные. Второй — необратимый процесс.

❌ Необратимый, потому что алгоритма дехэширования нет. Символы пароля и хэша не маппятся друг с другом один-в-один. Чтобы "дехэшировать" нужно банально подобрать хэш, но число вариантов для перебора будет огромно. Так называемые "радужные таблицы" позволяют его подбирать более оптимальным способом, из-за чего выясняется, что некоторые алгоритмы (например, MD5 и SHA-1) не в состоянии надежно хэшировать данные, а потому, их не рекомендуют использовать для защиты паролей. Алгоритмы отличаются друг от друга математическими операциями, которые не должны порождать коллизий, то есть не генерировать одинаковый хэш для разных входных данных.

🧂Чтобы обеспечить дополнительную защиту, хэш-функции усложняют пароль, добавляя так называемую "соль" (salt), т.е. сторонние символы. Важно понимать, что соль касается только хэширования, и нужна на случай взлома базы данных. Поэтому сами пароли должны быть длинной разносимвольной тарабарщиной, а не условный qwerty.

✏️ В языках программирования присутствуют как встроенные хэш-функции, так и можно использовать сторонние модули. Один из самых популярных модулей — bcrypt, основанный на алгоритме Blowfish.

🐍 Набросал фиддл на Python где:

(1) импортируется модуль bcrypt;
(2) создается пароль, преобразованный в байты;
(3) генерируется соль с фактором стоимости (cost factor) в 12 кругов итераций (для большей устойчивости к атакам);
(4) создается хэш пароля функцией hashpw();
(5) проверяется, что поданный на вход пароль соответствует тому, который был хэширован.

Выполнил по документации bcrypt-модуля.

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

🟢 Хэширование средствами базы данных. В PostgreSQL есть отдельный модуль pgcrypto, который предоставляет широкие возможности для генерации хэшей разными способами.

Помимо этого, в PostgreSQL просто есть функции задействующие хэширование разными алгоритмами (допустим, тот же SHA), описанные в документации.

#продолжи_мысль_SE

#Программирование #Python #SQL

Артем Лещев
Wikipedia Радужная таблица вариант таблиц поиска для обращения криптографических хеш-функций
  • ❤ 1
More from @asleshchev
  1. Aug 31, 2026Post #146
  2. Aug 9, 2026🛡 XSS-атака и аспекты безопасного API. Когда я 3-4 года назад работал менеджером ИТ-проек…
  3. Aug 1, 2026Есть у меня пара знакомых программистов, которые работают с железом. На мой вопрос — кто и…
  4. Jul 26, 2026🛡 CSRF-атака и аспекты безопасного API. CSRF произносится как sea-surf. Cross-Site Reques…
  5. Jul 17, 2026Post #142
  6. Jul 9, 2026На работе была проблема: сессия быстро протухала в Text-To-Speech-сервисе. Частые залогины…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →