הצפנת סיסמה מסווה את הסיסמאות של המשתמשים כך שקשה לנחש או לפענח אותן. זהו שלב חיוני בפיתוח תוכנה מאובטחת מבוססת משתמש. בין אם אתה בונה אחד עם Flask או מסגרת Python קלה אחרת, אתה לא יכול להתעלם מהשלב הזה. זה המקום שבו bcrypt נכנס לתמונה.
אנו נראה לך כיצד להשתמש ב-bcrypt כדי לגיבוב את הסיסמה שלך ב-Python.
איך bcrypt עובד
Bcrypt היא ספריית hashing אגנוסטית לשפה המציעה הצפנת סיסמה ייחודית. בזמן הצפנת המחרוזת שלך, היא מייצרת תווים אקראיים נוספים (מלח) כברירת מחדל כדי להגביר את אבטחת הסיסמה שלך.
לחלופין, תוכל גם לציין את מספר התווים הנוספים שברצונך להוסיף למחרוזת נכנסת.
ספריית Thebcrypt לא קוראת מחרוזות גולמיות - קוד בייט בלבד. אז בתור התחלה, תקודד תחילה מחרוזת סיסמה נכנסת לפני שתעביר אותה ל-bcrypt להצפנה.
קידוד אינו זהה להצפנה. זה רק מבטיח שהמחרוזת תהיה קריא במכונה לפני שאלגוריתם הצפנה יכול להסוות אותה.
הצפנת סיסמה ב-Python עם bcrypt
הצפנת סיסמת bcrypt קלה עם Python. נתמקד כיצד לעשות זאת ללא שימוש במסגרת. אבל אל דאגה, זה עוקב אחר אותו תהליך במסגרות ברגע שאתה יודע איך לאחסן את הקלט של המשתמשים שלך ולקרוא אותם ממסד הנתונים.
התקן והגדר את bcrypt
אם עוד לא עשית זאת, להפעיל סביבה וירטואלית של Python בשורש הפרויקט שלך. לאחר מכן התקן את bcrypt באמצעות צִפצוּף:
pip להתקין bcrpyt
התחל להצפין סיסמאות
לאחר ההתקנה, בואו נראה כיצד להצפין מחרוזת באמצעות bcrypt:
# ייבוא bcrypt:
ייבוא bcrypt
סיסמה = "mypasswordstring"
# קידוד סיסמה לקוד קריא utf-8 בתים:
password = password.encode('utf-8')
# גיבש את הסיסמה המקודדת וצור מלח:
hashedPassword = bcrypt.hashpw (סיסמה, bcrypt.gensalt())
print (hashedPassword)
כאשר אתה הפעל את קוד Python למעלה, הוא מדפיס מחרוזת בתים מוצפנת. הפלט, לעומת זאת, משתנה בכל פעם שאתה מבצע את הסקריפט. כך bcrypt מבטיח שלכל משתמש תהיה סיסמה מוצפנת ייחודית.
זה, אגב, להצפנת סיסמה.
כיצד להשוות ולאשר סיסמאות עם bcrypt
מה אם ברצונך לאחסן את הסיסמה הגובבת ולאשר מאוחר יותר שהיא תואמת לסיסמה שסופק על ידי המשתמש במהלך האימות?
זה קל. אתה רק צריך להשוות את סיסמת האימות לזו המאוחסנת במסד הנתונים (או בזיכרון במקרה זה).
ומכיוון ש-bcrypt קורא רק מחרוזות בתים, תצטרך גם לקודד את סיסמת האימות לפני השוואתה לזו שבבסיס הנתונים. למעשה, תצליב קלט אימות מקודד עם הסיסמה המקודדת שמקודדת שכבר מאוחסנת במסד הנתונים שלך.
באמצעות כניסות דמה של Python, בואו נראה איך זה עובד בפועל:
ייבוא bcrypt
#אחסן את הסיסמה שלך:
password = str (input("input password: "))
# מקודד את הסיסמה המאוחסנת:
password = password.encode('utf-8')
# הצפין את הסיסמה המאוחסנת:
hashed = bcrypt.hashpw (סיסמה, bcrypt.gensalt (10))
# צור שדה הזנת סיסמת אימות כדי לבדוק אם משתמש מזין את הסיסמה הנכונה:
check = str (input("בדוק סיסמה: "))
# מקודד גם את סיסמת האימות:
check = check.encode('utf-8')
# השתמש בתנאים כדי להשוות את סיסמת האימות לזו המאוחסנת:
if bcrypt.checkpw (בדוק, hashed):
print("הצלחה בכניסה")
אַחֵר:
print("סיסמה שגויה")
הקוד לעיל מבקש ממך להזין סיסמה חדשה בעת ביצועה. Python מאחסן את זה בזיכרון. לאחר מכן תספק את אותה סיסמה (הידועה רק לך) בשדה האימות.
Python מדפיס הודעת הצלחה אם הסיסמה המושוואת תואמת לסיסמה המוצפנת שנשמרה קודם לכן. אחרת, הוא מוציא את ההודעה שנכשלה עטופה ב- אַחֵר הַצהָרָה:
כל הרעיון זהה לאחסון סיסמה במסד נתונים במהלך הרישום ומתן אותה מאוחר יותר במהלך האימות.
הגדל את ההצפנה עם bcrypt
אמנם רק הדגמנו כיצד bcrypt פועלת על ידי אחסון סיסמאות מוצפנות בזיכרון Python קצר רגיל, השימוש האולטימטיבי שלה הוא ביישומים מבוססי משתמשים בחיים האמיתיים.
עם זאת, מדריך זה מראה את הדרכים הבסיסיות למבנה הקוד שלך כדי להשיג זאת, אפילו בתרחישים אמיתיים. לדוגמה, אם אתה משתמש ב-Flask, אתה יכול להחליף את הקלט בטפסי אינטרנט נפרדים כדי לשרת את שדות הרישום והאימות. וכמובן, תשמור סיסמאות מוצפנות במסד נתונים אמיתי ותקרא ממנו בעת השוואת סיסמאות.
כולם מדברים על הצפנה, אבל מוצאים את עצמכם אבודים או מבולבלים? הנה כמה מונחי הצפנה מרכזיים שאתה צריך לדעת.
קרא הבא
- תִכנוּת
- פִּיתוֹן
- תִכנוּת
- בִּטָחוֹן
Idowu נלהב מכל דבר טכנולוגי ופרודוקטיביות חכמה. בזמנו הפנוי הוא משתעשע בקידוד ועובר ללוח השחמט כשהוא משועמם, אבל הוא גם אוהב להתנתק מהשגרה מדי פעם. התשוקה שלו להראות לאנשים את הדרך סביב הטכנולוגיה המודרנית מניעה אותו לכתוב יותר.
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
לחץ כאן כדי להירשם