Python 3.6+secretsпонятие
secrets
модуль
Криптостойкие случайные числа и токены: пароли, ключи сброса, сессионные идентификаторы.
Синтаксис
import secrets
Всё, что защищает доступ, — токены, временные пароли, ссылки сброса — берут из secrets: он читает системный источник случайности. Модуль random для этого не годится: его генератор предсказуем по выходу и нужен для моделирования и игр. Частая ошибка — сравнивать токены через ==, а не secrets.compare_digest, который не выдаёт совпадение по времени ответа.
Примеры
import secrets
token = secrets.token_hex(16)
print(len(token)) # → 32 — 16 байт дают 32 шестнадцатеричных знака
print(secrets.compare_digest(token, token)) # → True
print(0 <= secrets.randbelow(10) < 10) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности