Szyfrowanie hasła maskuje hasła użytkowników, dzięki czemu stają się trudne do odgadnięcia lub odszyfrowania. Jest to niezbędny krok w tworzeniu bezpiecznego oprogramowania dla użytkowników. Niezależnie od tego, czy tworzysz jeden z Flask, czy z innym lekkim frameworkiem Python, nie możesz zignorować tego kroku. Tu właśnie pojawia się bcrypt.
Pokażemy Ci, jak używać bcrypt do haszowania hasła w Pythonie.
Jak działa bcrypt
Bcrypt to niezależna od języka biblioteka mieszająca, która oferuje unikalne szyfrowanie haseł. Podczas szyfrowania twojego ciągu, domyślnie generuje dodatkowe losowe znaki (sól), aby wzmocnić bezpieczeństwo twojego hasła.
Opcjonalnie możesz również określić liczbę dodatkowych znaków, które chcesz dodać do przychodzącego ciągu.
Biblioteka Thebcrypt nie odczytuje nieprzetworzonych ciągów — tylko kod bajtowy. Na początek najpierw zakodujesz przychodzący ciąg hasła przed przekazaniem go do bcrypt w celu zaszyfrowania.
Kodowanie to nie to samo, co szyfrowanie. Zapewnia jedynie, że ciąg stanie się odczytywalny maszynowo, zanim algorytm szyfrowania będzie mógł go zamaskować.
Szyfrowanie hasła w Pythonie za pomocą bcrypt
Szyfrowanie hasła bcrypt jest łatwe dzięki Pythonowi. Skoncentrujemy się na tym, jak to zrobić bez użycia frameworka. Ale nie martw się, postępuje zgodnie z tym samym procesem we frameworkach, gdy wiesz, jak przechowywać dane wejściowe użytkowników i odczytywać je z bazy danych.
Zainstaluj i skonfiguruj bcrypt
Jeśli jeszcze tego nie zrobiłeś, aktywować wirtualne środowisko Pythona w katalogu głównym projektu. Następnie zainstaluj bcrypt za pomocą pypeć:
pip zainstaluj bcrpyt
Rozpocznij szyfrowanie haseł
Po zainstalowaniu zobaczmy, jak zaszyfrować ciąg znaków za pomocą bcrypt:
# Importuj bcrypt:
importuj bcrypt
hasło = "ciąg_hasła"
# Zakoduj hasło w czytelnym 8-bajtowym kodzie UTF:
hasło = hasło.encode('utf-8')
# Zahaszuj zakodowane hasło i wygeneruj sól:
hashedPassword = bcrypt.hashpw (hasło, bcrypt.gensalt())
drukuj (haszowane hasło)
Kiedy ty uruchom kod Pythona powyżej, drukuje zaszyfrowany ciąg bajtów. Dane wyjściowe zmieniają się jednak za każdym razem, gdy wykonujesz skrypt. W ten sposób bcrypt zapewnia każdemu użytkownikowi unikatowe zaszyfrowane hasło.
Nawiasem mówiąc, to dotyczy szyfrowania hasła.
Jak porównywać i potwierdzać hasła za pomocą bcrypt
Co zrobić, jeśli chcesz zapisać zaszyfrowane hasło i potwierdzić później, że pasuje ono do hasła podanego przez użytkownika podczas uwierzytelniania?
To łatwe. Wystarczy porównać hasło uwierzytelniające z hasłem przechowywanym w bazie danych (lub w tym przypadku w pamięci).
A ponieważ bcrypt odczytuje tylko ciągi bajtów, będziesz musiał również zakodować hasło uwierzytelniające przed porównaniem go z hasłem w bazie danych. Zasadniczo sprawdzisz zakodowane dane wejściowe uwierzytelniania z zaszyfrowanym haszowanym hasłem, które jest już zapisane w Twojej bazie danych.
Korzystając z fikcyjnych danych wejściowych w Pythonie, zobaczmy, jak to działa w praktyce:
importuj bcrypt
#zapisz swoje hasło:
hasło = str (input("wprowadź hasło: "))
# Zakoduj zapisane hasło:
hasło = hasło.encode('utf-8')
# Zaszyfruj zapisane hasło:
hashed = bcrypt.hashpw (hasło, bcrypt.gensalt (10))
# Utwórz uwierzytelniające pole wprowadzania hasła, aby sprawdzić, czy użytkownik wprowadza poprawne hasło:
check = str (input("sprawdź hasło: "))
# Zaszyfruj również hasło uwierzytelniające:
check = check.encode('utf-8')
# Użyj warunków, aby porównać hasło uwierzytelniające z zapisanym:
jeśli bcrypt.checkpw (sprawdź, zaszyfruj):
print("powodzenie logowania")
w przeciwnym razie:
print("nieprawidłowe hasło")
Powyższy kod prosi o wprowadzenie nowego hasła podczas jego wykonywania. Python przechowuje to w pamięci. Następnie podasz to samo hasło (znane tylko Tobie) w polu uwierzytelniania.
Python wypisuje komunikat o powodzeniu, jeśli porównane hasło pasuje do poprzednio zapisanego zaszyfrowanego hasła. W przeciwnym razie wyświetla nieudaną wiadomość opakowaną w w przeciwnym razie oświadczenie:
Cała koncepcja jest taka sama, jak przechowywanie hasła w bazie danych podczas rejestracji i podanie go później podczas uwierzytelniania.
Szyfrowanie w górę za pomocą bcrypt
Chociaż pokazaliśmy tylko, jak działa bcrypt, przechowując zaszyfrowane hasła w krótkiej pamięci zwykłego Pythona, jego ostateczne zastosowanie dotyczy rzeczywistych aplikacji użytkownika.
Niemniej jednak ten samouczek pokazuje podstawowe sposoby strukturyzowania kodu, aby to osiągnąć, nawet w rzeczywistych scenariuszach. Na przykład, jeśli używasz Flask, możesz zastąpić dane wejściowe oddzielnymi formularzami internetowymi, aby obsługiwać pola rejestracji i uwierzytelniania. I oczywiście będziesz przechowywać zaszyfrowane hasła w rzeczywistej bazie danych i odczytywać je podczas porównywania haseł.
Wszyscy mówią o szyfrowaniu, ale czujesz się zagubiony lub zdezorientowany? Oto kilka kluczowych terminów szyfrowania, które musisz znać.
Czytaj dalej
- Programowanie
- Pyton
- Programowanie
- Bezpieczeństwo
Idowu pasjonuje się każdą inteligentną technologią i produktywnością. W wolnych chwilach bawi się kodowaniem, a gdy się nudzi, przechodzi na szachownicę, ale od czasu do czasu uwielbia też oderwać się od rutyny. Jego pasja do pokazywania ludziom drogi do nowoczesnych technologii motywuje go do pisania więcej.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować