Դուք երբեք չպետք է գաղտնաբառ պահեք պարզ տեքստում՝ օգտատիրոջը հաստատելիս կամ նման բան անելիս:
Քանի որ շատ անհատներ օգտագործում են նույն գաղտնաբառը, եթե հարձակվողը հայտնաբերում է չգաղտնագրված գաղտնաբառերի տվյալների բազա, դրանք հեշտությամբ կարող են օգտագործվել համապատասխան էլ.
Գաղտնաբառերը հաճախ հաշվում են այսօր, երբ գաղտնաբառ է տրվում: Խորհուրդ է տրվում աղի հետ հարել և աղը պահել գաղտնաբառի հետ միասին։
Աղակալումը կարող է թվալ որպես հեշ-բրաունի բաղադրատոմսի քայլերից մեկը, սակայն գաղտնագրության մեջ այն վերաբերում է պատահական տվյալների ավելացմանը հեշ ֆունկցիայի մուտքագրման մեջ՝ ապահովելու համար, որ հեշը միշտ եզակի արդյունք կտա, նույնիսկ եթե մուտքերը նույնական են:
Արդյունքում, աղ ավելացնելով ստեղծված տարբերակիչ հեշը կարող է պաշտպանել մեզ մի քանի հարձակման մեթոդներից, այդ թվում՝ հեշ աղյուսակի հարձակումներից, միաժամանակ խեղդելով բառարանի և կոպիտ ուժի անցանց փորձերը:
Այստեղ, կոդի հատվածների օգնությամբ, մենք ցույց կտանք, թե ինչպես օգտագործել «bcrypt»՝ ձեր գաղտնաբառերը պաշտպանելու համար:
Այսպիսով, ի՞նչ է «bcrypt»-ը:
Bcrypt-ը հեշինգային գրադարան է, որն աջակցում է մի քանի լեզուների և ապահովում է հատուկ գաղտնաբառի կոդավորում: Ձեր գաղտնաբառի անվտանգությունը բարձրացնելու համար այն ավտոմատ կերպով արտադրում է լրացուցիչ պատահական նիշեր (աղ) ձեր տողը գաղտնագրելիս:
Կարող եք նաև որոշել, թե որքան լրացուցիչ նիշ եք ցանկանում ավելացնել մուտքային տողի վրա:
Bcrypt գրադարանը կարդում է միայն բայթային կոդը, ոչ թե հումքի տողերը: Հետևաբար, նախքան մուտքային գաղտնաբառի տողը bcrypt-ին կոդավորման համար ներկայացնելը, նախ պետք է այն կոդավորել:
Կոդավորումը և կոդավորումը նույն բաները չեն: Այն պարզապես ապահովում է, որ տողը մեքենայական ընթեռնելի է, նախքան ծածկագրման տեխնիկան ծածկելը:
Օգտագործելով bcrypt-ը Python-ում գաղտնաբառ գաղտնագրելու համար
Python-ը հեշտացնում է bcrypt գաղտնաբառի կոդավորումը: Մենք կկենտրոնանանք դա անելու վրա՝ առանց շրջանակի օգնության: Բայց մի անհանգստացեք, եթե հասկանում եք, թե ինչպես պահպանել օգտատերերի մուտքերը և կարդալ դրանք տվյալների բազայից, ընթացակարգը նույնն է շրջանակներում:
տեղակայում
Ձեզ միայն անհրաժեշտ է ստեղծել Python վիրտուալ միջավայր, այնուհետև օգտագործել PyCharm-ի նման IDE: Այնուհետև նախ պետք է տեղադրել գրադարանը՝
Գաղտնաբառի ծածկագրում
Տեսնենք, թե ինչպես օգտագործել bcrypt տեքստը տեղադրվելուց հետո գաղտնագրելու համար.
Վերոհիշյալ Python կոդը կատարում և թողարկում է կոդավորված բայթ տող: Բայց ամեն անգամ, երբ դուք գործարկում եք սցենարը, արդյունքն այլ է: Bcrypt-ն օգտագործում է այս մեթոդը՝ համոզվելու համար, որ յուրաքանչյուր օգտվող ունի հատուկ գաղտնագրված գաղտնաբառ:
Դա, ի դեպ, գաղտնաբառի կոդավորման համար է:
Գաղտնաբառերի համեմատություն և հաստատում Bcrypt-ի միջոցով
Ի՞նչ է պատահում, եթե ցանկանում եք պահպանել հաշված գաղտնաբառը և ավելի ուշ ստուգել՝ արդյոք այն համապատասխանում է նույնականացման համար ներկայացված օգտատիրոջ գաղտնաբառին:
Դա պարզ է: Միայն նույնականացման գաղտնաբառը պետք է համեմատվի տվյալների բազայի մուտքի հետ (այս դեպքում՝ հիշողության մեջ):
Նույնականացման գաղտնաբառը պետք է նաև կոդավորված լինի տվյալների բազայի գաղտնաբառի հետ համեմատվելուց առաջ, քանի որ bcrypt-ը կարող է կարդալ միայն բայթերի տողերը: Ըստ էության, դուք կհամեմատեք կոդավորված նույնականացման մուտքագրումը կոդավորված հեշավորված գաղտնաբառի հետ, որը ներկայումս ունեք ձեր տվյալների բազայում:
Եկեք փորձարկենք սա՝ օգտագործելով մտացածին Python մուտքերը.
Վերոհիշյալ կոդը գործարկելուց հետո ձեզ կառաջարկվի նոր գաղտնաբառ: Սա պահվում է հիշողության մեջ Python-ի կողմից: Նույնականացման բաժնում դուք այնուհետև մուտքագրեք նույն գաղտնաբառը, որը մասնավոր է ձեզ համար:
Եթե գաղտնաբառը համեմատվում է և այն, որը նախկինում գաղտնագրված և պահպանված է համընկնումը, Python-ը թողարկում է հաջողության հաղորդագրություն:
Եթե ոչ, սխալի հաղորդագրությունը տպագրվում է, ապա ավելացվում է else նախադասությունը:
Հիմնարար գաղափարը նույնական է այն գաղափարին, երբ գրանցվում է, և այնուհետև տվյալների բազան նույնականացման համար գաղտնաբառ է տրամադրում:
Եզրափակում
Նույնիսկ եթե մենք պարզապես օգտագործել ենք կոդավորված գաղտնաբառեր՝ ցույց տալու համար, թե ինչպես է bcrypt-ը գործում պարզ Python կարճ հիշողության մեջ, դրա իրական կիրառելիությունը կայանում է օգտատերերի բազայի հավելվածներում:
Այնուամենայնիվ, այս հոդվածը ցույց է տալիս ձեր կոդը կազմակերպելու հիմնական մեթոդները՝ դա իրականացնելու համար, նույնիսկ իրական աշխարհի հանգամանքներում:
Օրինակ, եթե դուք օգտագործում եք Flask, կարող եք մուտքագրման փոխարեն տրամադրել գրանցման և վավերացման դաշտերը առանձին վեբ ձևերի միջոցով:
Իհարկե, գաղտնաբառերը համեմատելիս դուք կկարդաք տվյալների բազայից, որը պարունակում է կոդավորված գաղտնաբառեր, որոնք պահվում են իրական աշխարհում:
Յոնա Նիչ
Շնորհակալություն այս պարզ և պարզ բացատրության համար,
Սա ինձ շատ օգնեց իմ ընթացիկ նախագծում:
Կարծում եմ, շատ լավ է, որ օրինակի կոդը սահմանափակված է նվազագույնով և ծանրաբեռնված չէ, ինչպես շատ այլ բացատրություններ:
Best regards