"""Generate cryptographically strong pseudo-random numbers suitable for managing secrets such as account authentication, tokens, and similar. See PEP 506 for more information. https://www.python.org/dev/peps/pep-0506/ Amit nem hasznalok belole azt kivettem! Eredeti forras: https://raw.githubusercontent.com/python/cpython/3.7/Lib/secrets.py """ __all__ = ['choice', 'randbelow', 'randbits', 'SystemRandom', 'token_bytes', 'token_hex', 'token_urlsafe', 'compare_digest', ] import base64 import binascii import os from hmac import compare_digest from random import SystemRandom _sysrand = SystemRandom() randbits = _sysrand.getrandbits choice = _sysrand.choice DEFAULT_ENTROPY = 64 # number of bytes to return by default def token_bytes(nbytes=None): """Return a random byte string containing *nbytes* bytes. >>> token_bytes(16) #doctest:+SKIP b'\\xebr\\x17D*t\\xae\\xd4\\xe3S\\xb6\\xe2\\xebP1\\x8b'""" if nbytes is None: nbytes = DEFAULT_ENTROPY return os.urandom(nbytes) def token_hex(nbytes=None): """Return a random text string, in hexadecimal. >>> token_hex(16) #doctest:+SKIP 'f9bf78b9a18ce6d46a0cd2b0b86df9da'""" return binascii.hexlify(token_bytes(nbytes)).decode('ascii')