# 15. Cryptographic Services

The modules described in this chapter implement various algorithms of a cryptographic nature. They are available at the discretion of the installation. On Unix systems, the `crypt` module may also be available. Here’s an overview:

- 15.1. `hashlib` — Secure hashes and message digests
  - 15.1.1. Hash algorithms
  - 15.1.2. SHAKE variable length digests
  - 15.1.3. Key derivation
  - 15.1.4. BLAKE2
    - 15.1.4.1. Creating hash objects
    - 15.1.4.2. Constants
    - 15.1.4.3. Examples
      - 15.1.4.3.1. Simple hashing
      - 15.1.4.3.2. Using different digest sizes
      - 15.1.4.3.3. Keyed hashing
      - 15.1.4.3.4. Randomized hashing
      - 15.1.4.3.5. Personalization
      - 15.1.4.3.6. Tree mode
    - 15.1.4.4. Credits
- 15.2. `hmac` — Keyed-Hashing for Message Authentication
- 15.3. `secrets` — Generate secure random numbers for managing secrets
  - 15.3.1. Random numbers
  - 15.3.2. Generating tokens
    - 15.3.2.1. How many bytes should tokens use?
  - 15.3.3. Other functions
  - 15.3.4. Recipes and best practices