نحوه رمزگذاری پسوردها در پایتون با bcrypt
چگونه یک پسورد را با استفاده از پایتون رمزگذاری کنیم؟
رمزگذاری پسوردها برای محافظت از آنها صورت گرفته و یک امر ضروری در افزایش امنیت حساب های کاربری است. در این مطلب نحوه رمزگذاری پسوردها در پایتون را یاد خواهید گرفت که در صورت کدنویسی یک برنامه تحت وب با پایتون بسیار کاربردی خواهد بود.
ما کتابخانه bcrypt را برای این کار انتخاب کرده ایم که در ادامه با نحوه کار با آن آشنا خواهید شد.
کتابخانه bcrypt چونه کار می کند؟
کتابخانه bcrypt یک تابع رمزگذاری برای پسوردها است که بر اساس الگوریتم رمزنگاری Blowfish طراحی شده است. شما میتوانید bcrypt را برای سایر زبان های برنامه نویسی هم پیاده سازی کنید. این کتابخانه با تولید کاراکترهای اضافی که به اصطلاح slat یا نمک گفته می شود و با اضافه کردن آن به پسورد شما، رمزگذاری خود را انجام می دهد. همچنین می توانید تعداد کاراکترهایی را که می خواهید به رشته ورودی شما اضافه شود را مشخص کنید.
نصب و استفاده از bcrypt
برای نصب این کتابخانه با استفاده از pip دستور زیر را وارد کنید:
1 |
pip install bcrpyt |
پس از نصب، برای رمزگذاری یک رشته با استفاده از bcrypt به صورت زیر عمل می کنیم:
1 2 3 4 5 6 7 8 |
# Import bcrypt: import bcrypt password = "mypasswordstring" # Encode password into a readable utf-8 byte code: password = password.encode('utf-8') # Hash the ecoded password and generate a salt: hashedPassword = bcrypt.hashpw(password, bcrypt.gensalt()) print(hashedPassword) |
وقتی کد پایتون بالا را اجرا کنید، یک رشته رمزگذاری شده را چاپ می کند و با هر بار اجرای مجدد آن، خروجی تغییر می کند.
نحوه مقایسه و تأیید رمزهای عبور با bcrypt
اگر شما رمز عبور هش شده را ذخیره کنید و بعداً بخواهید تأیید کنید که آیا با رمز عبور ارائه شده کاربر در حین احراز هویت مطابقت دارد یا خیر؟ چه کاری باید انجام دهید؟
برای این کار باید رمز عبور احراز هویت را با رمز ذخیره شده در پایگاه داده مقایسه کنید. از آنجایی که bcrypt فقط byte strings را میخواند، شما ابتدا باید رمز عبور احراز هویت را قبل از مقایسه آن با رمز عبور در پایگاه داده تبدیل به byte strings کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import bcrypt #store your password: password = str(input("input password: ")) # Encode the stored password: password = password.encode('utf-8') # Encrypt the stored pasword: hashed = bcrypt.hashpw(password, bcrypt.gensalt(10)) # Create an authenticating password input field to check if a user enters the correct password: check = str(input("check password: ")) # Encode the authenticating password as well: check = check.encode('utf-8') # Use conditions to compare the authenticating password with the stored one: if bcrypt.checkpw(check, hashed): print("login success") else: print("incorrect password") |
کد بالا از شما می خواهد که در هنگام اجرا یک رمز عبور جدید وارد کنید. سپس همان رمز عبور (که فقط برای شما شناخته شده است) را در قسمت احراز هویت ارائه خواهید کرد.
اگر رمز عبوری که برای احراز هویت وارد می کنید با رمز عبور ذخیره شده قبلی مطابقت داشته باشد، پایتون یک پیام موفقیت آمیز چاپ می کند. در غیر این صورت، پیام ناموفق موجود در عبارت else را در خروجی چاپ می کند.
موارد گفته شده در بالا میتواند در فرآیند ثبت نام و بعد از آن به هنگام ورود و احراز هویت به کار رود.
دسته بندی ها: امنيت