# Cipher Toolbox

A practical cipher toolbox for learning encryption and decryption.

[![PyPI](https://img.shields.io/pypi/v/cipher-toolbox)](https://pypi.org/project/cipher-toolbox/) [![Python versions](https://img.shields.io/pypi/pyversions/cipher-toolbox)](https://pypi.org/project/cipher-toolbox/) [![Downloads](https://img.shields.io/pypi/dm/cipher-toolbox)](https://pypi.org/project/cipher-toolbox/) [![License](https://img.shields.io/pypi/l/cipher-toolbox)](https://opensource.org/licenses/MIT) [![CI](https://github.com/Gabriel-Dakinah-Vincent/cipher-toolbox/workflows/CI/badge.svg)](https://github.com/Gabriel-Dakinah-Vincent/cipher-toolbox/actions) [![Open issues](https://img.shields.io/github/issues/Gabriel-Dakinah-Vincent/cipher-toolbox)](https://github.com/Gabriel-Dakinah-Vincent/cipher-toolbox/issues) [![Last commit](https://img.shields.io/github/last-commit/Gabriel-Dakinah-Vincent/cipher-toolbox)](https://github.com/Gabriel-Dakinah-Vincent/cipher-toolbox/commits/main)

### Quick start

{% tabs %}
{% tab title="CLI" %}
{% code title="CLI quick start" %}

```bash
# Install from PyPI
pip install cipher-toolbox

# List available ciphers
cipher-tool list

# Encrypt with Caesar
cipher-tool encrypt caesar "HELLO WORLD" --shift 3
# KHOOR ZRUOG

# Decrypt with Caesar
cipher-tool decrypt caesar "KHOOR ZRUOG" --shift 3
# HELLO WORLD
```

{% endcode %}
{% endtab %}

{% tab title="Python" %}
{% code title="Python quick start" %}

```python
from cipher_tool import encrypt, decrypt

ciphertext = encrypt("caesar", "HELLO WORLD", shift=3)
plaintext = decrypt("caesar", ciphertext, shift=3)

print(ciphertext)  # KHOOR ZRUOG
print(plaintext)   # HELLO WORLD
```

{% endcode %}
{% endtab %}
{% endtabs %}

### pip usage

Use `python -m pip` if `pip` points at the wrong Python.

{% code title="Install and upgrade" %}

```bash
# Install from PyPI
pip install cipher-toolbox

# Upgrade to the newest release
pip install --upgrade cipher-toolbox

# Install a specific version
pip install "cipher-toolbox==0.1.3"

# Reinstall (useful for broken environments)
pip install --force-reinstall cipher-toolbox

# Remove it
pip uninstall cipher-toolbox
```

{% endcode %}

{% code title="Version pinning (examples)" %}

```bash
# Exact pin (most reproducible)
pip install "cipher-toolbox==0.1.3"

# Compatible range (allows bugfix updates, blocks majors)
pip install "cipher-toolbox>=0.1.3,<2"
```

{% endcode %}

{% code title="Discover what you have / what exists" %}

```bash
# Show installed package metadata
pip show cipher-toolbox

# List installed files (site-packages paths)
pip show -f cipher-toolbox

# List all versions known to your configured index
pip index versions cipher-toolbox
```

{% endcode %}

{% code title="Download (offline-friendly)" %}

```bash
# Download wheels/sdists without installing (current directory)
pip download cipher-toolbox

# Download into a dedicated folder
pip download -d ./packages cipher-toolbox

# Install from a downloaded wheel
pip install ./packages/cipher_toolbox-*.whl
```

{% endcode %}

{% code title="Inspect wheel metadata (METADATA)" %}

```bash
# Wheel filenames usually use underscores, not hyphens
ls -1 cipher*toolbox*.whl

unzip cipher_toolbox-*.whl -d ./wheel
cat ./wheel/*dist-info/METADATA
```

{% endcode %}

{% hint style="info" %}
If `pip index versions` fails, upgrade pip: `python -m pip install -U pip`. If `pip show` returns nothing, the package is not installed in this env.
{% endhint %}

### What’s included

* A CLI: `cipher-tool`.
* A small Python API: `encrypt()` and `decrypt()`.
* Classical ciphers for learning and test vectors.
* A few modern primitives for demos.

See [Ciphers and parameters](/cipher-toolbox/reference/ciphers-and-parameters.md) for supported algorithms.

### Docs

<table data-view="cards"><thead><tr><th>Title</th><th data-card-target data-type="content-ref">Target</th><th data-type="rating" data-max="5"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td>CLI reference</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/QXyY5hplRhAHxVY8hDZZ">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/QXyY5hplRhAHxVY8hDZZ</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1762242298589-582f5f6c3fb1?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHwxfHxDT01NQU5EJTIwTElORXxlbnwwfHx8fDE3NzE1ODU2ODh8MA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1762242298589-582f5f6c3fb1?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHwxfHxDT01NQU5EJTIwTElORXxlbnwwfHx8fDE3NzE1ODU2ODh8MA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td>Python API</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/zlbGOIKZDfb3iSThElXK">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/zlbGOIKZDfb3iSThElXK</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1658204191944-374e8115a2de?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw1fHxhcGl8ZW58MHx8fHwxNzcxNTg1Njk3fDA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1658204191944-374e8115a2de?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw1fHxhcGl8ZW58MHx8fHwxNzcxNTg1Njk3fDA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td>Ciphers and parameters</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/G92USe9CfeD6RslV2qZK">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/G92USe9CfeD6RslV2qZK</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1677602686233-23ac18fad0de?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw2fHxDaXBoZXJ8ZW58MHx8fHwxNzcxNTg1NzM1fDA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1677602686233-23ac18fad0de?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw2fHxDaXBoZXJ8ZW58MHx8fHwxNzcxNTg1NzM1fDA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td>Contributing</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/wAR3naaPPWnca7nJGSsj">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/wAR3naaPPWnca7nJGSsj</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1730531678444-6a754099570f?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw5fHxDb250cmlidXRlfGVufDB8fHx8MTc3MTU4NTc3MXww&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1730531678444-6a754099570f?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw5fHxDb250cmlidXRlfGVufDB8fHx8MTc3MTU4NTc3MXww&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td>Security policy</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/3SupgtCqzFzajtpzjBYD">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/3SupgtCqzFzajtpzjBYD</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw3fHxTZWN1cml0eXxlbnwwfHx8fDE3NzE1ODU3OTJ8MA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1523961131990-5ea7c61b2107?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHw3fHxTZWN1cml0eXxlbnwwfHx8fDE3NzE1ODU3OTJ8MA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr><tr><td>Changelog</td><td><a href="/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/fVxtfSUCEMbHulLI4xpi">/spaces/3C2Ht2iPlLwYmTSrAFJT/pages/fVxtfSUCEMbHulLI4xpi</a></td><td>null</td><td><a href="https://images.unsplash.com/photo-1499244571948-7ccddb3583f1?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHwxfHxjaGFuZ2V8ZW58MHx8fHwxNzcxNTg1ODI4fDA&#x26;ixlib=rb-4.1.0&#x26;q=85">https://images.unsplash.com/photo-1499244571948-7ccddb3583f1?crop=entropy&#x26;cs=srgb&#x26;fm=jpg&#x26;ixid=M3wxOTcwMjR8MHwxfHNlYXJjaHwxfHxjaGFuZ2V8ZW58MHx8fHwxNzcxNTg1ODI4fDA&#x26;ixlib=rb-4.1.0&#x26;q=85</a></td></tr></tbody></table>

### Security notice

{% hint style="warning" %}
Cipher Toolbox is for education and experimentation.

Do not use it for sensitive or regulated data.

Use production-grade libraries for real security.
{% endhint %}

See [Security Policy](/cipher-toolbox/project/security.md) for reporting.

### License

MIT licensed. See [LICENSE](https://github.com/Gabriel-Dakinah-Vincent/cipher-toolbox/blob/main/LICENSE/README.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://eadmiral.gitbook.io/cipher-toolbox/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
