petarmiketa :: project

Caesar Cipher CLI

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

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"
Caesar Cipher CLI preview
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}