# 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:

- `hashlib` --- Secure hashes and message digests
  - Hash algorithms
  - SHAKE variable length digests
  - Key derivation
  - BLAKE2
    - Creating hash objects
    - Constants
    - Examples
      - Simple hashing
      - Using different digest sizes
      - Keyed hashing
      - Randomized hashing
      - Personalization
      - Tree mode
    - Credits
- `hmac` --- Keyed-Hashing for Message Authentication
- `secrets` --- Generate secure random numbers for managing secrets
  - Random numbers
  - Generating tokens
    - How many bytes should tokens use?
  - Other functions
  - Recipes and best practices