PHP 8.2.30
Preview: crypt.py Size: 3.27 KB
/proc/self/root/opt/alt/python37/lib64/python3.7/crypt.py

"""Wrapper to the POSIX crypt library call and associated functionality."""

import _crypt
import string as _string
from random import SystemRandom as _SystemRandom
from collections import namedtuple as _namedtuple


_saltchars = _string.ascii_letters + _string.digits + './'
_sr = _SystemRandom()


class _Method(_namedtuple('_Method', 'name ident salt_chars total_size')):

    """Class representing a salt method per the Modular Crypt Format or the
    legacy 2-character crypt method."""

    def __repr__(self):
        return '<crypt.METHOD_{}>'.format(self.name)


def mksalt(method=None, *, rounds=None):
    """Generate a salt for the specified method.

    If not specified, the strongest available method will be used.

    """
    if method is None:
        method = methods[0]
    if rounds is not None and not isinstance(rounds, int):
        raise TypeError(f'{rounds.__class__.__name__} object cannot be '
                        f'interpreted as an integer')
    if not method.ident:  # traditional
        s = ''
    else:  # modular
        s = f'${method.ident}$'

    if method.ident and method.ident[0] == '2':  # Blowfish variants
        if rounds is None:
            log_rounds = 12
        else:
            log_rounds = int.bit_length(rounds-1)
            if rounds != 1 << log_rounds:
                raise ValueError('rounds must be a power of 2')
            if not 4 <= log_rounds <= 31:
                raise ValueError('rounds out of the range 2**4 to 2**31')
        s += f'{log_rounds:02d}$'
    elif method.ident in ('5', '6'):  # SHA-2
        if rounds is not None:
            if not 1000 <= rounds <= 999_999_999:
                raise ValueError('rounds out of the range 1000 to 999_999_999')
            s += f'rounds={rounds}$'
    elif rounds is not None:
        raise ValueError(f"{method} doesn't support the rounds argument")

    s += ''.join(_sr.choice(_saltchars) for char in range(method.salt_chars))
    return s


def crypt(word, salt=None):
    """Return a string representing the one-way hash of a password, with a salt
    prepended.

    If ``salt`` is not specified or is ``None``, the strongest
    available method will be selected and a salt generated.  Otherwise,
    ``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as
    returned by ``crypt.mksalt()``.

    """
    if salt is None or isinstance(salt, _Method):
        salt = mksalt(salt)
    return _crypt.crypt(word, salt)


#  available salting/crypto methods
methods = []

def _add_method(name, *args, rounds=None):
    method = _Method(name, *args)
    globals()['METHOD_' + name] = method
    salt = mksalt(method, rounds=rounds)
    result = crypt('', salt)
    if result and len(result) == method.total_size:
        methods.append(method)
        return True
    return False

_add_method('SHA512', '6', 16, 106)
_add_method('SHA256', '5', 16, 63)

# Choose the strongest supported version of Blowfish hashing.
# Early versions have flaws.  Version 'a' fixes flaws of
# the initial implementation, 'b' fixes flaws of 'a'.
# 'y' is the same as 'b', for compatibility
# with openwall crypt_blowfish.
for _v in 'b', 'y', 'a', '':
    if _add_method('BLOWFISH', '2' + _v, 22, 59 + len(_v), rounds=1<<4):
        break

_add_method('MD5', '1', 8, 34)
_add_method('CRYPT', None, 2, 13)

del _v, _add_method

Directory Contents

Dirs: 31 × Files: 172

Name Size Perms Modified Actions
asyncio DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:10:43
Edit Download
ctypes DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
curses DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
dbm DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
distutils DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
email DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
encodings DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
ensurepip DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
html DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
http DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
idlelib DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
importlib DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
json DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
lib2to3 DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
logging DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2025-09-17 08:08:35
Edit Download
sqlite3 DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
test DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
unittest DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
urllib DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
venv DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
wsgiref DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
xml DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
xmlrpc DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
5.45 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
32.04 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
477 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
93.14 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
12.54 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
11.06 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
19.65 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
19.92 KB lrwxr-xr-x 2024-04-17 17:36:04
Edit Download
30.99 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
13.63 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
2.50 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
12.12 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
24.24 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
34.23 KB lrwxr-xr-x 2024-04-17 17:36:07
Edit Download
11.74 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
5.31 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
14.51 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
10.37 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
35.76 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
6.13 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
3.97 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
13.46 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
53.01 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
24.18 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
129 B lrw-r--r-- 2024-04-17 17:36:07
Edit Download
8.65 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
6.85 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
6.11 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
3.27 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
15.80 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
48.36 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
84.52 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
320 B lrw-r--r-- 2024-04-17 17:36:07
Edit Download
82.42 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
19.42 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
102.11 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
2.75 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
34.22 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
9.60 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
14.28 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.96 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
14.79 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
23.20 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
34.78 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
32.16 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
4.80 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
7.31 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
5.85 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
21.45 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
5.51 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
20.15 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
9.31 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
22.48 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
6.36 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
52.04 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
3.71 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
10.29 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
114.88 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
3.43 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
71.85 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
2.20 KB lrwxr-xr-x 2024-04-17 17:36:07
Edit Download
5.21 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
76.36 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
12.68 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
5.98 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
76.81 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
8.85 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
20.99 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
22.50 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
5.44 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
42.08 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
21.82 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
2.52 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
10.00 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
5.69 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
10.61 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
58.96 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
37.01 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
49.15 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
61.04 KB lrwxr-xr-x 2024-04-17 17:36:04
Edit Download
56.63 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
89.08 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
8.71 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
20.96 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
45.89 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
29.99 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
14.61 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
15.40 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
20.39 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
21.97 KB lrwxr-xr-x 2024-04-17 17:36:04
Edit Download
26.67 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
4.65 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
14.78 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
103.39 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
7.81 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
11.09 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
7.09 KB lrwxr-xr-x 2024-04-17 17:36:07
Edit Download
26.91 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
14.95 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
5.14 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
6.93 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
11.68 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
6.29 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
1.99 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
18.13 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
8.33 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
12.79 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
40.97 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
2.07 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
21.07 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
33.91 KB lrwxr-xr-x 2024-04-17 17:36:04
Edit Download
43.40 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
6.92 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
26.83 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
26.29 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
26.24 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
7.01 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
38.24 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
44.43 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
5.26 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
20.17 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
11.29 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
12.61 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
257 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
70.95 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
17.94 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
2.09 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
7.11 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
23.87 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
11.15 KB lrwxr-xr-x 2024-04-17 17:36:07
Edit Download
90.50 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
22.59 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
26.10 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
18.95 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
1003 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
48.13 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
13.18 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
3.67 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
26.40 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
28.23 KB lrwxr-xr-x 2024-04-17 17:36:03
Edit Download
22.89 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
16.68 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
879 B lrw-r--r-- 2024-04-17 17:36:03
Edit Download
9.67 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
55.12 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
7.11 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
28.83 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
19.61 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
17.80 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
21.00 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
23.16 KB lrwxr-xr-x 2024-04-17 17:36:07
Edit Download
5.77 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
7.36 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
79.19 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
1.76 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
25.80 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
8.54 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
5.21 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
5.89 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
14.26 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
19.14 KB lrw-r--r-- 2024-04-17 17:36:07
Edit Download
223.33 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
89.47 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
6.04 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
3.04 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
24.91 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
30.59 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
27.93 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
7.04 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
5.55 KB lrw-r--r-- 2024-04-17 17:36:03
Edit Download
4.98 KB lrw-r--r-- 2024-04-17 17:36:08
Edit Download
64 B lrw-r--r-- 2024-04-17 17:36:07
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).