import os
import hashlib
def hash_password(password, salt_len=16, iterations=10000, encoding='utf-8'):
····salt = os.urandom(salt_len)
····hashed_password = hashlib.pbkdf2_hmac(
········hash_name='sha256',
········password=bytes(password, encoding),
········salt=salt,
········iterations=iterations
····)
····return salt, iterations, hashed_password
Библиотека secrets (https://docs.python.org/3.6/library/secrets.html) была предложена в PEP 506 (https://www.python.org/dev/peps/pep-0506/), она доступна с версии Python 3.6. Предоставляет функции генерации токенов для безопасности, которые подходят приложениям, а также функции восстановления пароля и создания URL, которые сложно угадать. Ее документация содержит примеры и рекомендации по управлению безопасностью на базовом уровне.
pyOpenSSL
pyOpenSSL
Когда вышла библиотека Cryptography, pyOpenSSL (https://pyopenssl.readthedocs.io/en/stable/) обновила свои привязки так, чтобы использовать основанные на CFFI привязки Cryptography для OpenSSL и попасть под крыло PyCA.
pyOpenSSL намеренно не является частью стандартной библиотеки Python, чтобы можно было выпускать обновления безопасности с желаемой скоростью[109] — ее строят для новых версий OpenSSL, а не для версий OpenSSL, поставляющихся с вашей операционной системой (если только вы не строите ее сами для новой версии). Как правило, если вы строите сервер, то используете pyOpenSSL (обратитесь к документации для SSL от Twisted по адресу http://twistedmatrix.com/documents/12.0.0/core/howto/ssl.html — там вы найдете пример применения pyOpenSSL).
Установите ее с помощью pip:
$ pip install pyOpenSSL
И импортируйте под именем OpenSSL. В этом примере показываются несколько доступных функций:
>>> import OpenSSL