# Caesar Cipher CLI

Python CLI alat za demonstraciju klasične kriptografije: enkripcija, dekripcija i brute-force analiza Caesarove šifre.

GitHub
Python argparse CLI Crypto basics

## Features

- Enkripcija teksta Caesarovom šifrom (A–Z) uz očuvanje razmaka i interpunkcije
- Dekripcija pomoću poznatog ključa (0–25)
- Brute-force način rada (isprobava svih 26 ključeva)
- Stabilan CLI output i pomoć (`-h`)

Cilj projekta je edukativan: pokazati zašto je mali keyspace slabost i kako izgleda “sigurnosno razmišljanje” u praksi.

## Files

- `cipher.py` — glavna logika (encrypt/decrypt/brute)
- `README` / dokumentacija — primjeri poziva i opis rada

Zašto CLI? Jer tako rade mnogi security alati: brzi, ponovljivi testovi i jasan output.

## Kako koristiti (brzo)

Pokreni iz foldera projekta. Ključ je broj 0–25.

    # Enkripcija
    python cipher.py encrypt --text "HELLO WORLD" --key 3

    # Dekripcija
    python cipher.py decrypt --text "KHOOR ZRUOG" --key 3

    # Brute-force (ispiše sve ključeve 0–25)
    python cipher.py brute --text "EBIIL TLOIA"

Preview: primjer help menu-a i korištenje komandi. Tip: isprobaj `python cipher.py -h` da vidiš sve opcije.

## Writeup

Caesarova šifra je klasična supstitucijska šifra gdje se svako slovo poruke pomakne za fiksan broj mjesta u abecedi. Taj pomak je ključ i u standardnoj abecedi ima raspon 0–25. Iako je povijesno važna i odlična za učenje, danas se smatra nesigurnom jer ima premalen broj mogućih ključeva. :contentReference[oaicite:1]{index=1}

### Teorijska pozadina

Login i “sigurnost” često zvuče kompleksno, ali kriptografija kreće od jednostavnih ideja: pretvori poruku u oblik koji nije odmah čitljiv bez ključa. Caesar je super uvod jer se sve svodi na pomicanje slova, a odmah se vidi i najveći problem: napadač može probati sve ključeve u sekundi. :contentReference[oaicite:2]{index=2}

### Kako računalo “vidi” slova

Računalo radi s brojevima. U Pythonu su korisne funkcije `ord()` i `chr()`: jedna pretvara znak u broj, a druga vraća broj nazad u znak. Slova mapiram na raspon 0–25, a zatim koristim modularnu aritmetiku da se abeceda “zatvori” (npr. Z → A). :contentReference[oaicite:3]{index=3}

Mini primjer (ideja):
Ako je `A = 0`, `B = 1`, …, `Z = 25`, onda enkripcija radi: `(slovo + ključ) mod 26`.

### Enkripcija

Enkripcija prolazi kroz svaki znak teksta. Ako je znak slovo, pretvori se u broj, doda se ključ i vrati u slovo. Ako nije slovo (razmak, točka, zarez), ostaje isti — to čini output čitljivijim i olakšava provjeru rezultata. :contentReference[oaicite:4]{index=4}

- slovo → mapiranje u 0–25 → + ključ → `mod 26` → nazad u slovo
- ne-slovo → ostaje isto

### Dekripcija

Dekripcija je “ogledalo” enkripcije: umjesto dodavanja, radi se oduzimanje ključa. Zato što je algoritam simetričan, samo obrnemo pomak i dobivamo original. :contentReference[oaicite:5]{index=5}

### Brute-force napad

Najveća slabost Caesarove šifre je keyspace od samo 26. Napadač može ispisati svih 26 mogućnosti i “na oko” brzo prepoznati smislen tekst. U ovom projektu brute-force način rada postoji baš zato da se vidi koliko je to trivijalno i zašto moderni sustavi koriste jače mehanizme. :contentReference[oaicite:6]{index=6}

### CLI dizajn

Alat je napravljen kao CLI pomoću `argparse` i ima tri moda: encrypt, decrypt i brute. Ovo je namjerno “realističan” format jer se i u praksi security alati često koriste kroz terminal. :contentReference[oaicite:7]{index=7}