Blog

Novice, inspiracija in namigi

SmartNinja izziv maj/junij 2020 - kdo je zmagal?

SmartNinja izziv maj/junij 2020 - kdo je zmagal?

02.07.2020 SmartNinja

V SmartNinja izzivu za meseca maj in junij so tečajniki morali narediti program oz. aplikacijo za uporabo Cezarjeve šifre.

Cezarjeva šifra? Kaj je to?

Cezarjeva šifra je zelo preprost način enkripcije podatkov, ki se imenuje po Juliju Cezarju. In zelo verjetno si ta način šifriranja nekoč že uporabil/a.

Priljubljen je bil namreč med osnovnošolci (vsaj v času pred mobilniki), ko so si med poukom pošiljali skrivna sporočila preko listkov.

Kako deluje Cezarjeva šifra?

Recimo, da želimo zašifrirati sporočilo "Dober dan". Enkripcijo bomo naredili tako, da bomo premaknili vse črke v tem sporočilu za določeno število mest v abecedi, npr. za 4 mesta.

Črka "d" bo tako postala "h". Črka "o" bo postala "š". "B" bo postal "e". In tako naprej.

Iz sporočila "Dober dan" tako dobimo zašifrirano poved "Hšeiu hds". Vse črke v sporočilu so bile premaknjene za 4 mesta (glede na slovensko abecedo, seveda).

Ko pošljemo šifrirano sporočilo prejemniku, mora ta vedeti, za koliko mest smo premaknili črke, zato se moramo s prejemnikom že prej dogovoriti za to številko (temu lahko rečemo tudi skrivni ključ).

Primer, ko premaknemo abecedo za 3 mesta

(Na zgornji sliki so črke angleške abecede zamaknjene za 3 mesta)

Kaj je bila naloga v izzivu?

Naloga je bila pripraviti računalniški program, ki bi nam pomagal šifrirati sporočila, zato da tega ne rabimo početi ročno.

Tečajniki so lahko naredili bodisi namizni program, bodisi spletno aplikacijo.

Zahteve so bile, da ima program grafični vmesnik, da uporablja programski jezik Python ter da algoritem za šifriranje napiše tečajnik/tečajnica sam/a (ne pa da bi uporabil/a kako že narejeno implementacijo Cezarjeve šifre v obliki programskega paketka).

Kdo je zmagal?

Tudi tokrat sta zmagovalca dva: Jaka Fefer ter Beno Zupanc.

Beno

Beno se je udeležil tečaja Programiranje za začetnike, kjer se je naučil programskega jezika Python in izdelave namiznih programov. Zato je za ta izziv naredil namizni program, ki za grafični vmesnik uporablja Tkinter (to je standardna Python knjižnica).

Številko zamika črk se določi z drsnikom, hkrati pa se ob tem premika tudi rdeča vrstica abecede in tako poda lep pregled konverzije vseh črk v abecedi.

S klikom na "Benigma" (oz. z odkljukanjem te opcije), se zadeva obrne, in neko šifrirano sporočilo lahko odšifriramo.

Koda Benotove rešitve je dostopna na njegovem GitHubu: povezava.

Jaka

Jaka se je udeležil naših tečajev Web development 1 in Web development 2, zato je za izziv namesto namizne aplikacije naredil spletno aplikacijo.

Spletna aplikacija uporablja priljubljeno Python ogrodje Flask, za komunikacijo med frontendom ter backendom pa skrbi JavaScript.

S pomočjo HTML in CSS kode je oblikoval lep uporabniški vmesnik, ki se zna prilagoditi tudi mobilnim zaslonom.

Koda Jakove rešitve je dostopna na njegovem GitHubu. Sama spletna aplikacija pa teče na Heroku strežniku: https://ccipher.herokuapp.com/.

Čestitke!

Čestitke obema zmagovalcema! 🎉 Že v kratkem pa bo na našem GitHubu objavljen nov izziv za julij in avgust. 🤓

izziv challenge kriptografija python

Poglej si naše tečaje

SQL in baze podatkov (online)

SQL in baze podatkov (online)

Kjerkoli 02.11.2020

Znanje načrtovanja podatkovnih baz je ena najpomembnejših veščin pri razvoju IT produktov. Prijavi se in se ga nauči!

od 199,00 EUR

Prijavi se na tečaj
Programiranje za začetnike (online)

Programiranje za začetnike (online)

Kjerkoli 16.11.2020

Nauči se osnov programiranja in postani programer/ka! Na tečaju se uporablja programski jezik Python, ki je eden najbolj priljubljenih programskih jezikov.

od 199,00 EUR

Prijavi se na tečaj

Prijavi se na sveže SmartNinja e-novice!