Ви ніколи не повинні зберігати пароль у вигляді відкритого тексту під час підтвердження користувача чи виконання чогось подібного.
Оскільки багато людей використовують один і той самий пароль, якщо зловмисник виявить базу даних незашифрованих паролів, їх можна легко використати разом із відповідними електронними адресами для входу на пов’язаний веб-сайт або обліковий запис і навіть спробувати отримати доступ до інших облікових записів.
Сьогодні паролі часто хешуються, коли надається пароль. Рекомендується змішувати з сіллю та зберігати сіль разом із хешованим паролем.
Соління може здатися одним із кроків у рецепті хеш-браунів, але в криптографії це означає додавання випадкових даних до вхідних даних хеш-функції, щоб гарантувати, що хеш завжди забезпечуватиме унікальний результат, навіть якщо вхідні дані ідентичні.
Як наслідок, характерний хеш, створений додаванням солі, може захистити нас від кількох методів атак, включаючи напади на хеш-таблицю, придушуючи спроби використання словника та грубої сили в автономному режимі.
Тут за допомогою фрагментів коду ми продемонструємо, як використовувати «bcrypt» для захисту ваших паролів.
Отже, що таке «bcrypt»?
Bcrypt — це бібліотека хешування, яка підтримує кілька мов і забезпечує спеціальне шифрування паролів. Щоб підвищити безпеку вашого пароля, він автоматично створює додаткові випадкові символи (соль) під час шифрування вашого рядка.
Ви також можете вибрати, скільки додаткових символів ви бажаєте додати до вхідного рядка.
Бібліотека bcrypt читає лише байтовий код, а не необроблені рядки. Таким чином, перш ніж надсилати вхідний рядок пароля до bcrypt для шифрування, ви повинні спочатку закодувати його.
Шифрування та кодування – це не одне й те саме. Він лише гарантує, що рядок є машиночитаним перед тим, як його приховати технікою шифрування.
Використання bcrypt для шифрування пароля в Python
Python робить шифрування паролів bcrypt простим. Ми зосередимося на тому, щоб зробити це без допомоги фреймворку. Але не хвилюйтеся, якщо ви розумієте, як зберігати введені користувачем дані та читати їх із бази даних, у фреймворках процедура така сама.
установка
Вам потрібно лише налаштувати віртуальне середовище Python, а потім використовувати IDE, наприклад PyCharm. Потім спочатку потрібно встановити бібліотеку:
Шифрування пароля
Давайте подивимося, як використовувати bcrypt для шифрування тексту після його встановлення:
Вищезгаданий код Python виконує та виводить зашифрований рядок байтів. Але кожного разу, коли ви запускаєте сценарій, результат буде іншим. Bcrypt використовує цей метод, щоб переконатися, що кожен користувач має спеціально зашифрований пароль.
Це, до речі, для шифрування пароля.
Порівняння та підтвердження паролів за допомогою Bcrypt
Що станеться, якщо ви забажаєте зберегти хешований пароль і пізніше перевірити, чи збігається він з паролем, наданим користувачем для автентифікації?
це просто. Лише пароль автентифікації потрібно порівнювати із записом бази даних (або в пам’яті в цьому випадку).
Пароль автентифікації також має бути закодований перед порівнянням із паролем у базі даних, оскільки bcrypt може читати лише рядки байтів. По суті, ви порівняєте закодований вхід для автентифікації з закодованим хешованим паролем, який зараз є у вашій базі даних.
Давайте перевіримо це, використовуючи фіктивні вхідні дані Python:
Після запуску вищезгаданого коду вам буде запропоновано ввести новий пароль. Це зберігається в пам'яті Python. У розділі автентифікації ви введете той самий пароль, який є вашим особистим.
Якщо пароль порівнюється з тим, який раніше був зашифрований і зберіг збіг, Python видає повідомлення про успішне виконання.
Якщо ні, роздруковується повідомлення про помилку, а потім додається речення else.
Фундаментальна ідея ідентична реєстрації та введенню пароля до бази даних для автентифікації.
Висновок
Незважаючи на те, що ми просто використовували зашифровані паролі, щоб показати, як bcrypt функціонує в звичайній короткій пам’яті Python, його фактичне застосування полягає в додатках для користувачів.
Тим не менш, ця стаття демонструє основні методи організації коду, щоб досягти цього, навіть у реальних обставинах.
Наприклад, якщо ви використовуєте Flask, ви можете надати поля реєстрації та автентифікації через окремі веб-форми замість введення.
Звичайно, під час порівняння паролів ви читатимете дані з бази даних, яка містить зашифровані паролі, які зберігаються в реальному світі.
Джона Ніч
Дякую за це просте та просте пояснення,
Це дуже допомогло мені в моєму поточному проекті.
Я вважаю, що дуже добре, що приклад коду обмежений мінімумом і не перевантажений, як багато інших пояснень.
З найкращими побажаннями