Никога не трябва да пазите парола в обикновен текст, докато потвърждавате потребител или правите нещо подобно.
Тъй като много хора използват една и съща парола, ако нападателят открие база данни с некриптирани пароли, те могат лесно да бъдат използвани заедно със съвпадащи имейли за влизане в свързания уебсайт или акаунт и дори използвани за опит за достъп до други акаунти.
Днес паролите често се хешират, когато се предостави парола. Препоръчително е да се смеси със сол и да се запази солта заедно с хешираната парола.
Осоляването може да изглежда като една от стъпките в рецепта за хеш браун, но в криптографията това се отнася до добавяне на произволни данни към входа на хеш функция, за да се гарантира, че хешът винаги ще предоставя уникален резултат, дори ако входовете са идентични.
В резултат на това отличителният хеш, създаден чрез добавяне на солта, може да ни защити от няколко метода на атака, включително атаки на хеш таблици, като същевременно задушава речникови и груби офлайн опити.
Тук, с помощта на кодови фрагменти, ще демонстрираме как да използвате „bcrypt“, за да защитите вашите пароли.
И така, какво е „bcrypt“?
Bcrypt е хешираща библиотека, която поддържа няколко езика и осигурява специално криптиране на пароли. За да увеличи сигурността на вашата парола, тя автоматично произвежда допълнителни произволни знаци (сол), когато шифрова вашия низ.
Можете също да изберете да определите колко допълнителни знака искате да добавите към входящ низ.
Библиотеката bcrypt чете само байтов код, а не необработени низове. Следователно, преди да изпратите входящ низ с парола към bcrypt за криптиране, първо трябва да го кодирате.
Шифроването и кодирането не са едно и също нещо. Той просто гарантира, че даден низ е машинно четим, преди да бъде покрит от техника за криптиране.
Използване на bcrypt за шифроване на парола в Python
Python прави криптирането на пароли с bcrypt лесно. Ще се съсредоточим върху това без помощта на рамка. Но не се притеснявайте, ако разбирате как да запазвате потребителски въведени данни и да ги четете от базата данни, процедурата е същата в рамките.
Инсталация
Трябва само да настроите виртуална среда на Python и след това да използвате IDE като PyCharm. След това първо трябва да се инсталира библиотеката:
Шифроваща парола
Нека да видим как да използваме bcrypt за шифроване на текст, след като е инсталиран:
Гореспоменатият код на Python изпълнява и извежда шифрован байтов низ. Но всеки път, когато стартирате скрипта, резултатът е различен. Bcrypt използва този метод, за да се увери, че всеки потребител има парола, която е специално криптирана.
Това, между другото, е за криптиране на пароли.
Сравнение и потвърждение на пароли с помощта на Bcrypt
Какво се случва, ако искате да запазите хешираната парола и да проверите по-късно, за да видите дали съвпада с паролата, изпратена от потребителя за удостоверяване?
това е просто Само паролата за удостоверяване трябва да се сравнява с записа в базата данни (или в паметта в този случай).
Паролата за удостоверяване също трябва да бъде кодирана, преди да бъде сравнена с тази в базата данни, тъй като bcrypt може да чете само байтови низове. По принцип ще сравните кодиран вход за удостоверяване с кодираната хеширана парола, която в момента имате във вашата база данни.
Нека тестваме това, като използваме фиктивни входове на Python:
При стартиране на гореспоменатия код ще бъдете подканени да въведете нова парола. Това се записва в паметта от Python. След това в секцията за удостоверяване ще въведете същата парола, която е лична за вас.
Ако паролата се сравни с тази, която е била криптирана преди това и е запазила съвпадението, Python излъчва съобщение за успех.
Ако не, съобщението за грешка се отпечатва и след това се добавя изречението else.
Основната идея е идентична с тази за регистриране и след това предоставяне на парола към база данни за удостоверяване.
Заключение
Въпреки че просто използвахме криптирани пароли, за да покажем как bcrypt функционира в обикновена къса памет на Python, действителната му приложимост се крие в потребителски приложения.
Независимо от това, тази статия демонстрира основните методи за организиране на вашия код, за да постигнете това, дори в реални обстоятелства.
Например, ако използвате Flask, можете да предоставите полетата за регистрация и удостоверяване чрез отделни уеб формуляри вместо въвеждане.
Разбира се, докато сравнявате пароли, ще четете от база данни, която съдържа криптирани пароли, които се пазят в реалния свят.
Джона Нич
Благодаря ви за това просто и просто обяснение,
Това ми помогна много в настоящия ми проект.
Мисля, че е много добре, че примерният код е ограничен до минимума и не е претоварен като толкова много други обяснения.
С Най-Добри Пожелания