Metadata-Version: 2.4
Name: encrypt-and-decrypt
Version: 1.0.1
Summary: Every encoding and cipher from ~1500 BC to today (58 languages) behind one dead-simple syntax: Encode(Text='Hello', Language='caesar')
Author-email: Your Name <you@example.com>
License-Expression: MIT
Keywords: encryption,decryption,cipher,encoding,caesar,vigenere,morse,enigma,aes,rsa,chacha20,base64,cryptography,security,education,encode,decode
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Education
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: fast
Requires-Dist: cryptography>=3.0; extra == "fast"
Dynamic: license-file

# encrypt&decrypt

Every encoding and cipher from the first one (~1500 BC) to the present day —
**58 languages**, one dead-simple syntax, zero hard dependencies.

## Install

Copy the `encrypt_and_decrypt` folder next to your script (or put its parent
folder on `PYTHONPATH`), then:

```python
from encrypt_and_decrypt import Encode, Decrypt
```

## Usage

```python
from encrypt_and_decrypt import Encode, Decrypt

Encode(Text="Hello", Language="caesar")          # 'Khoor'
Decode("Khoor", Language="caesar")               # 'Hello'
Decrypt(Encode(Text="Hello", Language="base64")) # chained syntax works
Decrypt("Khoor")                                 # Language="" -> auto-detect
```

Optional parameters:

| Parameter   | Meaning                                                                    |
|-------------|----------------------------------------------------------------------------|
| `Text`      | input string (leave empty to read from `FilePath`)                         |
| `Language`  | any id from `list_languages()` - **required on Encode** (`""` raises); `""` on Decrypt = auto-detect |
| `FilePath`  | read input from file (Text empty) / write result to file (Text given)      |
| `Key`       | key for keyed ciphers (Vigenere, AES, RSA, ...) - defaults are built in    |
| `Key2`      | second key (ADFGVX, Four-square, Nihilist)                                 |
| `Period`    | period for Bifid / Trifid (default 5)                                      |
| `Envelope`  | `True` -> self-describing output `<<<ED|lang|payload>>>`                   |

Aliases: `Encode` = `Encrypt`, `Decrypt` = `Decode`. Hashes (`md5`, `sha256`, ...)
are one-way and cannot be decrypted.

## Explore all 58 languages

```python
from encrypt_and_decrypt import usage, list_languages
usage()                 # printed cheat-sheet, grouped by era
list_languages()        # machine-readable catalogue
```

Eras covered: **Ancient** (Scytale, Caesar, Atbash, Polybius, Tap code) →
**Classical** (Vigenère, Beaufort, Autokey, Affine, Bacon, Nihilist, Rail Fence,
Playfair, Four-square, Hill, Bifid, Trifid, ADFGVX) → **Telegraph & Machine**
(Morse, Braille, Baudot, NATO, Enigma I) → **Digital Age** (Binary, Octal,
Decimal, Hex, Base32/58/64/85, Ascii85, URL, HTML, Unicode escapes,
Quoted-Printable, UUEncode) → **Novelty** (DNA, Emoji, Pig Latin, Leet) →
**Modern** (XOR, RC4, AES-256, Fernet, 3DES, ChaCha20-Poly1305, RSA) →
**Hashes** (CRC32, MD5, SHA-1/256/512, SHA-3, BLAKE2).

## Local playground (built in)

Run the interactive cipher console on your own machine — zero extra
dependencies, pure Python standard library:

```bash
python -m encrypt_and_decrypt.lab     # or, after pip install:
ed-lab
```

Then open `http://127.0.0.1:8765`. You get the full console: all 58
languages, auto-detect, keys, envelope mode. The server binds to
localhost only and stops with Ctrl+C.

## Dependencies

None required. If the `cryptography` package is installed, AES / Fernet /
3DES / ChaCha20 / Poly1305 use real hardware-accelerated primitives;
otherwise a self-contained pure-Python fallback keeps everything working.
