Выбрать главу

b'$2b$14$qAmVOCfEmHeC8Wd5BoF1W.7ny9M7CSZpOR5WPvdKFXDbkkX8rGJ.e'

Сохраняем хэшированный пароль:

>>> import binascii

>>> hexed_hashed_pw = binascii.hexlify(hashed_pw)

>>> store_password(user_id=42, password=hexed_hashed_pw)

Когда приходит время проверять пароль, используйте хэшированный пароль в качестве второго аргумента функции bcrypt.hashpw() следующим образом:

>>> hexed_hashed_pw = retieve_password(user_id=42)

>>> hashed_pw = binascii.unhexlify(hexed_hashed_pw)

>>>

>>> bcrypt.hashpw(password, hashed_pw)

b'$2b$14$qAmVOCfEmHeC8Wd5BoF1W.7ny9M7CSZpOR5WPvdKFXDbkkX8rGJ.e'

>>>

>>> bcrypt.hashpw(password, hashed_pw) == hashed_pw

True

Глава 10. Манипуляции с данными

В этой главе приводятся популярные библиотеки Python, предназначенные для работы с данными, которые могут быть численными, текстовыми, а также изображениями и аудио. Практически все эти библиотеки используются для решения уникальных задач, поэтому в этой главе мы лишь опишем их, не сравнивая друг с другом. Вы можете установить библиотеки из PyPI с помощью команды pip, если не указано иное:

$ pip install library

В табл. 10.1 кратко описываются библиотеки.

Таблица 10.1. Инструменты для работы с данными
Библиотека Python Лицензия Причины использовать
IPython Лицензия Apache 2.0 Предоставляет улучшенный интерпретатор Python, имеющий историю ввода, интегрированный отладчик, а также возможность строить графики в терминале (с помощью версии с Qt)
NumPy Лицензия BSD 3-clause Предоставляет многомерные массивы и инструменты линейной алгебры, оптимизированные для скорости
SciPy Лицензия BSD Предоставляет функции и вспомогательные программы, связанные с инженерией и наукой (от линейной алгебры до обработки сигналов), интеграцией, поиском корня, статистическим распределением и другими темами
Matplotlib Лицензия BSD Позволяет строить научные графики
Pandas Лицензия BSD Предоставляет ряды и объекты DataFrame, которые можно сохранять, объединять, группировать, выполнять агрегацию, индексировать окна и создавать их подмножества — очень похоже на R Data Frame или содержимое запроса SQL
Scikit-Learn Лицензия BSD 3-clause Предоставляет алгоритмы машинной обработки, включающие понижение размерности, регрессию, работу с кластерами, выбор модели, ввод недостающих данных и предварительную обработку
Rpy2 Лицензия GPLv2 Предоставляет интерфейс к R, который позволяет выполнять функции этого языка изнутри Python, а также передавать данные между двумя средами
SymPy Лицензия BSD Предоставляет символьную математику, включающую разложение в ряд, пределы и анализ. Стремится выглядеть как полноценная вычислительная система
nltk Лицензия Apache Предоставляет полноценный натуральный тулкит, имеющий модели и данные для обучения на многих языках
pillow / PIL Стандартная лицензия PIL (наподобие лицензии MIT) Предоставляет огромное количество форматов файлов, а также возможности по фильтрации изображений и прочей обработке
cv2 Лицензия Apache 2.0 Предоставляет программы для машинного распознавания образов, подходящие для выполнения анализа видеороликов в реальном времени, включая заранее обученные алгоритмы определения людей и лиц
Scikit-Image Лицензия BSD Предоставляет подпрограммы для обработки изображений (фильтрации, регулирования, цветоделения, определения краев, пятен, углов, сегментации и пр.)

Практически все эти библиотеки зависят от библиотек, написанных на C, в частности от SciPy или одной из ее зависимостей NumPy. Это означает, что у вас могут возникнуть проблемы с их установкой, если вы работаете в ОС Windows. Если вы используете Python в основном для анализа научных данных и не знакомы с компилированием кода на C и FORTRAN в ОС Windows, рекомендуем выбрать Anaconda или один из других вариантов, представленных в разделе «Коммерческие дистрибутивы Python» главы 2. В противном случае всегда сначала пробуйте выполнять команду pip install, а если она даст сбой, обращайтесь к руководству по установке SciPy (https://www.scipy.org/install.html).