29
ZAVOD SV. STANISLAVA ŠKOFIJSKA KLASIČNA GIMNAZIJA Avtor: Peter Berkopec Mentorica: Helena Starc Grlj Šolsko leto: 2017 / 2018 Kodiranje sporočil - kriptografija Maturitetna seminarska naloga

Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

  • Upload
    others

  • View
    23

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

ZAVOD SV. STANISLAVA

ŠKOFIJSKA KLASIČNA GIMNAZIJA

Avtor: Peter Berkopec

Mentorica: Helena Starc Grlj

Šolsko leto: 2017 / 2018

Kodiranje sporočil - kriptografija Maturitetna seminarska naloga

Page 2: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

2

Vsebina Povzetek ..................................................................................................................................... 3

Abstract ...................................................................................................................................... 3

1 Uvod .................................................................................................................................... 6

1.1 Predstavitev problema ................................................................................................ 6

1.2 Programska in strojna oprema .................................................................................... 7

2 Teoretični del seminarske naloge ........................................................................................ 8

2.1 Šifriranje ...................................................................................................................... 8

2.2 Potrebno znanje ........................................................................................................ 10

2.2.1 Android Studio ...................................................................................................... 10

2.2.2 Android aplikacija ................................................................................................. 11

3 Praktičen del maturitetne seminarske naloge .................................................................. 12

3.1 Opis rešitve ................................................................................................................ 12

3.2 Navodila za uporabo .................................................................................................. 13

3.3 Končni program ......................................................................................................... 16

4 Zaključek ............................................................................................................................ 28

4.1 Ocena dela ................................................................................................................. 28

4.2 Možne izboljšave ....................................................................................................... 28

5 Viri ..................................................................................................................................... 29

Page 3: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

3

Povzetek

Cilj te maturitetne seminarske naloge je bil ustvariti funkcionalno android aplikacijo, ki

lahko šifrira in dešifrira dan tekst. Tu je opisan postopek, vsa programska oprema in potrebna

znanja. V to spada tudi nekaj osnovnih podatkov o Android Studio, višjem programskem jeziku

Java, strukturi android aplikacij in opis različnih šifrirnih postopkov.

Abstract

My goal with this assigment was to create a functional android application, that is

capable of encrypting a given text. In this paper I have described all necessary software and

required knowledge along with the procedure of my work. This includes some basic information

about Android Sudio, programming language Java, the structure of android applications and a

description of the different encryption algorithms.

Ključne besede Android Studio, aplikacija, android, Java, postavitev, šifriranje

Stvarno Kazalo

activity ...................................................................... 9, 10, 11, 13, 15, 16, 18, 20, 22, 24, 25, 26

android .................................................................................................................... 3, 5, 9, 26, 28

Android Studio ..................................................................................................... 3, 4, 5, 8, 9, 28

aplikacija .......................................................................................................................... 3, 9, 26

besedilo ............................................................................................................................. 6, 8, 10

gumb ................................................................................................................................... 11, 13

Java ............................................................................................................................... 3, 4, 8, 10

ključ ...................................................................................................................................... 6, 10

postavitev ......................................................................................................................... 3, 9, 15

program .......................................................................................................................... 6, 11, 14

šifriranje ........................................................................................................................... 3, 6, 26

zaslon .................................................................................................................................. 11, 13

Page 4: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

4

Kazalo slik Slika 1: Vigenerov kvadrat angleške abecede .............................................................. 10

Slika 2: Primer uporabe aplikacije ............................................................................... 12

Slika 3: Izbirna gumba .................................................................................................. 13

Slika 4: Gumba za izbiro šifre ...................................................................................... 13

Slika 5: Cezarjeva-zašifriraj ........................................................................................ 13

Slika 6:Cezarjeva-dešifriraj .......................................................................................... 14

Slika 7:Vigenere-zašifriraj ............................................................................................ 14

Slika 8: Vigenere-dešifriraj .......................................................................................... 15

Slika 9: Rezultati šifriranja "abeceda123" .................................................................... 15

Slika 10: Android manifest ........................................................................................... 16

Slika 11: MainActiviry.java: Uvozi in koda prvega gumba ......................................... 16

Slika 12: MainActivity.java - koda drugega gumba ..................................................... 17

Slika 13: activity_main.xml - začetna postavitev ......................................................... 17

Slika 14: activity_main.xml - Gumba s šiframa ........................................................... 17

Slika 15:activity_main.xml - izbirna gumba (radio buttons) ........................................ 18

Slika 16: Cezarjeva.java - Uvozi in potek funkcije onCreate() .................................... 18

Slika 17: Cezarjeva.java - potek funkcije cela() ........................................................... 19

Slika 18: Cezarjeva.java - Potek funkcij zasifriraj(...) in onOptionsItemSelected(...) . 19

Slika 19: activity_cezarjeva.xml .................................................................................. 20

Slika 20: CezarjevaOdsifrirana,java - uvozi in funkcija onCreate() ............................ 20

Slika 21: CezarjevaOdsifrirana.java - funkcija cela ..................................................... 21

Slika 22: CezarjevaOdsifrirana.java-funkciji odsifriraj(...) in onOptionsItemSelected(...)

.................................................................................................................................................. 21

Slika 23: activity_cezarjeva_odsifrirana.xml ............................................................... 22

Slika 24: Vigenere.java - uvozi in funkcija onCreate() ................................................ 22

Slika 25: Vigenere.java - funkcija cela() ...................................................................... 23

Slika 26: Vigenere.java - funkcije vigenere(...), rotate(...) in onOptionsItemSelected(...)

.................................................................................................................................................. 23

Slika 27: activity_vigenere.xml .................................................................................... 24

Slika 28: VigenereOdsifrirana.java - uvozi in onCreate() ............................................ 24

Slika 29: VIgenereOdsifrirana.java - funkcija cela() ................................................... 25

Slika 30:VigenereOdsifrirana.java - funkcije vigenereOd(...), rotate(...) in

onOptionsItemSelected(...) ....................................................................................................... 25

Page 5: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

5

Slika 31: activity_vigenere_odsifrirana.xml ................................................................ 26

Slika 32: Results.java ................................................................................................... 26

Slika 33: activity_results.xml ....................................................................................... 27

Page 6: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

6

1 Uvod

1.1 Predstavitev problema

Alice in Bob bi si rada po pošti privatno zmenila za svoj zmenek (kraj, čas in vsebino).

Žal pa jima prisluškuje Eva, ki bi rada izvedela vse to izvedela in jima uničila zmenek. Za varno

komunikacijo lahko dandanes Alice in Bob uporabita z mnoge kriptografskimi postopki (bolj

ali manj učinkovite). Toda temu čez zgodovino ni bilo tako, zato sem se odločil preučiti

zgodovino kriptografije in v aplikacijo vključiti dve bolj osnovni šifri.

Kriptografija me zanima že nekaj časa, zato se mi je ta seminarska naloga zdela popolna

priložnost, da naredim nekaj kriptografskega tudi v praksi. Aplikacijo bom delal v Android

studio, programu za razvijanje telefonskih aplikacij, s katerim sem se prvič srečal ob začetku

šolskega leta na krožku. Android Studio uporablja višji programski jezik Java, v katerem bom

prvič programiral tak projekt.

Page 7: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

7

1.2 Programska in strojna oprema

Tabela 1: Strojna oprema

Strojna oprema

Procesor Intel Core i5-6300HQ 2.30 GHz

RAM 8GB DDR4

Grafična kartica Nvidia GeForce

Zaslon 1920 x 1080

Tabela 2: Programska oprema

Programska oprema

Windows 10 Operacijski sistem

Google Chrome Spletni brskalnik

Android Studio Program za razvijanje android aplikacij

Microsoft Office Word Urejevalnik besedil

FileZilla Program za prenašanje datotek

Page 8: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

8

2 Teoretični del seminarske naloge

2.1 Šifriranje

Šifriranje je zelo stara ideja, saj so že v antičnih časih uporabljali šifre, čeprav so bili

kodi(znaki za dogovorjene pojme) in stenografija (skrivanje sporočila) bolj pogosti. Najbolj

znana je substitucijska Cezarjeva šifra, ki je ena od šifer ki sem se jih odločil vključiti v svoj

program. Pri substitucijski šifri zamenjamo ali črke v sporočilu ali pa črke v abecedi

zamaknemo, da dobimo neberljivo sporočilo. Problem le tega je da če nekdo ki hoče prebrati

sporočilo ve po kakšnem sistemu(algoritmu) je zašifriran ga z lahkoto dešifrira. Zato so razvili

monoalfabetsko šifro ki pa se ne zanaša na algoritem temveč na samo število možnosti. Ta šifra

uporablja povsem naključno sestavljeno abecedo- črke so pomešane brez sistema. Tako dobimo

ogromno število vseh možnosti. To šifro so razbili s frekvenco črk v besedilu. Ker ima vsak

jezik neke črke bolj pogoste kot druge, jih lahko tako najdemo v besedilu.

Cezarjeva šifra je bila, kot ime že namiguje, uporabljena že v starem veku in jo je

uporabljal Cezar. To je preprost postopek, ki šifrira z enako abecedo, toda zamaknjeno za n-

mest, ko je n ključ. Postopek ni kriptografsko varen, saj ga lahko dešifriraš že s preprostim

»brute force« napadom, ki preveri vse možnosti rešitev.

Naj bo ključ n=2. Tako se beseda KODIRANJE zašifrira v besedo MRFKŠCPLG, ki

izgleda kot skupek popolnoma nepovezanih črk. Po sistemu Cezarjeve šifre se K spremeni v

črko, ki se nahaja za n mest za njo, kar je v našem primeru M. O se spremeni v R, D se spremeni

v F in tako naprej. Dešifriranje je preprosto obraten postopek, pri katerem črko v kodiranjem

besedilu prestavimo za n mest po abecedi nazaj. M gre tako v K in tako dalje.

Tako so razvili Vigenerovo šifro, ki pa uporablja 25 različnih abeced (oziroma toliko

kot jih ima abeceda v uporabljenem jeziku) ki pa se uporablja s pomočjo ključne besede. To

premeša frekvenco pojavljenih črk, ker se uporablja druga abeceda vsako n-črk, ko je n dolžina

ključa. To pomeša frekvenco pojavljanja določenih znakov v besedilu, kar je rešilo problem

dešifriranja teh sporočil. Toda tudi to šifro so razbili z frekvenco vsakih n-znakov. Taka

šifrirana besedila je zato težko (oz. nemogoče) zlomiti, če besedilo ni dovolj dolgo.

Za primer bom zakodiral besedilo: »zakodiraj to besedilo, ki je daljše od 25 črk«.

Uporabil sem ključ: »ključ« in navadno slovensko abecedo.

Za lažje šifriranje na roko se uporablja Viginerov kvadrat.

Page 9: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

9

Tabela 3: Vigenerov kvadrat (s slovensko abecedo)

/ A B C Č D E F G H I J K L M N O P R S Š T U V Z Ž

A A B C Č D E F G H I J K L M N O P R S Š T U V Z Ž

B B C Č D E F G H I J K L M N O P R S Š T U V Z Ž A

C C Č D E F G H I J K L M N O P R S Š T U V Z Ž A B

Č Č D E F G H I J K L M N O P R S Š T U V Z Ž A B C

D D E F G H I J K L M N O P R S Š T U V Z Ž A B C Č

E E F G H I J K L M N O P R S Š T U V Z Ž A B C Č D

F F G H I J K L M N O P R S Š T U V Z Ž A B C Č D E

G G H I J K L M N O P R S Š T U V Z Ž A B C Č D E F

H H I J K L M N O P R S Š T U V Z Ž A B C Č D E F G

I I J K L M N O P R S Š T U V Z Ž A B C Č D E F G H

J J K L M N O P R S Š T U V Z Ž A B C Č D E F G H I

K K L M N O P R S Š T U V Z Ž A B C Č D E F G H I J

L L M N O P R S Š T U V Z Ž A B C Č D E F G H I J K

M M N O P R S Š T U V Z Ž A B C Č D E F G H I J K L

N N O P R S Š T U V Z Ž A B C Č D E F G H I J K L M

O O P R S Š T U V Z Ž A B C Č D E F G H I J K L M N

P P R S Š T U V Z Ž A B C Č D E F G H I J K L M N O

R R S Š T U V Z Ž A B C Č D E F G H I J K L M N O P

S S Š T U V Z Ž A B C Č D E F G H I J K L M N O P R

Š Š T U V Z Ž A B C Č D E F G H I J K L M N O P R S

T T U V Z Ž A B C Č D E F G H I J K L M N O P R S Š

U U V Z Ž A B C Č D E F G H I J K L M N O P R S Š T

V V Z Ž A B C Č D E F G H I J K L M N O P R S Š T U

Z Z Ž A B C Č D E F G H I J K L M N O P R S Š T U V

Ž Ž A B C Č D E F G H I J K L M N O P R S Š T U V Z

Page 10: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

10

Slika 1: Vigenerov kvadrat angleške abecede

Zašifrirano besedilo se tako glasi: »jlukgtdjf zb moohouvk, nt vo aczvdb so 25 čoc«.

Vsaka črka je ohranila svoje mesto in znaki se prepišejo naprej. Toda črke se zakodirajo po

sedaj petih različnih cezarjevih šifrah, toda besedilo bi lahko zakodirano s poljubno dolgim

ključem, kar izredno poveča število vseh možnih ključev. Prva črka Z se je spremenila v J, saj

se Z stolpec križa z K vrstico v polju J, ki postane prva črka. Naslednjo črko dobimo, če

pogledamo presečišče stolpca A in vrstice L. Zašifrirana vrednost je tako L. S to logiko

nadaljujemo do konca besedila.

Tako besedilo pa dešifriramo z obratnim postopkom. Tako npr. vzamemo prvo črko

šifriranega besedila, jo najdemo v tabeli in pogledamo, kjer se ta stolpec seka z vrstico, ki se

začne na s prvo črko ključa. Tam kjer se sekata je dešifrirana črka.

2.2 Potrebno znanje

2.2.1 Android Studio

Za uspešno izdelavo te projektne naloge moram bolj podrobno tudi spoznati v prvi vrsti

programski jezik Java, ki ga uporablja Android Studio. Osvajanje sintaktičnega dela tega

programskega jezika mi najverjetneje ne bo vzelo preveč težav saj sem se že dodobra spoznal

s C++.

Naslednji del, ki bo najverjetneje najzahtevnejši bo uporabljati sam Android Studio.

Nekaj sem sem z njim že spoznal na krožku, toda ker za samostojno aplikacijo potrebuješ veliko

znanja, bo potrebno izredno veliko časa za osvojitev vseh funkcij in postopkov.

Page 11: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

11

To je možno razširiti s spletnim mestom GitHub, na katerem se lahko ljudje delijo svojo

kodo z ostalimi. To bi bilo mojemu projektu v pomoč, saj bom moral za kakšne nejasnosti moral

imeti lahko dostopno kodo moje aplikacije.

2.2.2 Android aplikacija

Android aplikacija ima zelo značilno strukturo. Android Studio ima različne poglede v

katerih se datoteke razvrstijo na različne načine. Najbolj celotno strukturo pokaže android

pogled, možni pa so tudi projektni (kjer so datoteke tam kot na disku) itd. Opisoval bom kako

so datoteke razvrščene v Android pogledu.

Glavna delitev je na začetku na »app« mapo in mapo »Gradle Scripts«. »App« mapa pa

nadalje vključuje tri manjše podmape: »manifests«, »java« in »res«. V mapi podmapi

»manifests« je samo ena .xml datoteka, ki se imenuje »AndroidManifest«. Tam je je tj. activity-

ji in kateri activity se zažene, ko kliknemo na ikono na telefonu. Naslednje pomembne datoteke

so .java v mapi src. Tam se običajno v android aplikacijah nahajajo kakšne pomembne funkcije

in (kar je pomembno za mojo seminarsko maturitetno nalogo) različni activity-ji. Activity-ji v

aplikaciji služijo kot različne zaslonske interaktivne slike. Moja aplikacija ima npr. 6 takih .java

datotek. V »res« podmapi pa se nahajajo podmape »drawable«, »layout«, »menu«, »mipmap«

in »values«. Od teh v moji aplikaciji neposredno uporabljam »layout« in »mipmap« podmapi.

V podmapi »layout« se nahajajo .xml datoteke, ki se uporabljajo za postavitev activity-jev. V

podmapi »mipmap« pa se nahajajo različne velikosti slike, ki jo vidimo na meniju v telefonu.

V ostalih podmapah pa se nahajajo ostale »res« datoteke (npr. v »values« se nahajajo besedilne

datoteke, v »drawable« se nahajajo slike, ki jih izrišeš s kodo itd.).

V glavni mapi »Gradle Scripts« pa se nahajajo različne že zgrajene datoteke. Ta del

zaseda tudi največ prostora na disku. Android Studio gradi te datoteke že med samim

spreminjanjem kode v urejevalniku.

Page 12: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

12

3 Praktičen del maturitetne seminarske naloge

3.1 Opis rešitve

Program sem napisal v programskem jeziku Java, ki ga uporablja Android studio.

Uporabnik mora najprej izbrati po kakšnem postopku bi rad zašifriral ali dešifriral. Program

nato odpre potreben activity (uporabljal bom angleški izraz, ker ni slovenske ustreznice) in

zbere od uporabnika potrebne podatke (besedilo in ključ). Pri tem lovi vse možne izjeme, ki so

pogoste pri uporabnikih (napačni znaki, prazna polja, nepravilen ključ itd.) in ga temu primerno

opozori. Če se je vse izteklo brez napak, potem mu izpiše zašifrirano oz. dešifrirano besedilo.

Slika 2: Primer uporabe aplikacije

Page 13: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

13

3.2 Navodila za uporabo

Poleg dokumentacije sta priložena .zip in .apk datoteki. Za pregled .zip datoteke

(samoumevno je potrebno imeti Android Studio) je potrebno ekstrahirati to datoteko v mapo,

ki se nahaja na naslovu C:\Users\»Uporabnik«\AndroidStudioProjects. Ko to storimo lahko

odpremo projekt »seminarska«. Priloženo .apk datoteko pa lahko samo naložimo na telefon in

inštaliramo seminarska.apk datoteko.

Ko zaženemo program, se nam prikaže zaslon na katerem imamo dve odločitvi: ali

želimo zašifrirati ali dešifrirati sporočilo in katero šifro bi radi uporabili. Ko označimo izbirni

gumb, potem pa pritisnemo gumb, s katerim izberemo vrsto šifriranja tj. Vigenerovo ali

Cezarjevo šifro. Če uporabnik slučajno pritisne gumb za izbiranje šifriranja, potem ga program

opozori, da mora najprej izbrati, kaj želi storiti s šifrirnim postopkom.

Slika 3: Izbirna gumba

Glede na naše odločitve lahko dobimo enega izmed štirih možnih activity-jev. V sami postavitvi

strani so si zelo podobni, toda vsak je odgovoren za drugačen postopek pri obeh šifrah.

Slika 5: Cezarjeva-zašifriraj

Slika 4: Gumba za izbiro šifre

Page 14: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

14

Slika 6: Cezarjeva-dešifriraj

Slika 7: Vigenere-zašifriraj

Page 15: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

15

Slika 8: Vigenere-dešifriraj

Ko vpišemo vse podatke, nas vrne na zaslon z rezultati. Na njem se nahaja gumb za vrnitev na

prvi zaslon.

Slika 9: Rezultati šifriranja "abeceda123"

Na vsaki točki programa, razen na glavnem zaslonu obstaja gumb za vrnitev na prejšnji activity.

Page 16: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

16

3.3 Končni program

Slika 10: Android manifest

Slika 11: MainActiviry.java: Uvozi in koda prvega gumba

Page 17: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

17

Slika 12: MainActivity.java - koda drugega gumba

Slika 13: activity_main.xml - začetna postavitev

Slika 14: activity_main.xml - Gumba s šiframa

Page 18: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

18

Slika 15:activity_main.xml - izbirna gumba (radio buttons)

Slika 16: Cezarjeva.java - Uvozi in potek funkcije onCreate()

Page 19: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

19

Slika 17: Cezarjeva.java - potek funkcije cela()

Slika 18: Cezarjeva.java - Potek funkcij zasifriraj(...) in onOptionsItemSelected(...)

Page 20: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

20

Slika 19: activity_cezarjeva.xml

Slika 20: CezarjevaOdsifrirana,java - uvozi in funkcija onCreate()

Page 21: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

21

Slika 21: CezarjevaOdsifrirana.java - funkcija cela

Slika 22: CezarjevaOdsifrirana.java-funkciji odsifriraj(...) in onOptionsItemSelected(...)

Page 22: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

22

Slika 23: activity_cezarjeva_odsifrirana.xml

Slika 24: Vigenere.java - uvozi in funkcija onCreate()

Page 23: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

23

Slika 25: Vigenere.java - funkcija cela()

Slika 26: Vigenere.java - funkcije vigenere(...), rotate(...) in onOptionsItemSelected(...)

Page 24: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

24

Slika 27: activity_vigenere.xml

Slika 28: VigenereOdsifrirana.java - uvozi in onCreate()

Page 25: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

25

Slika 29: VIgenereOdsifrirana.java - funkcija cela()

Slika 30:VigenereOdsifrirana.java - funkcije vigenereOd(...), rotate(...) in onOptionsItemSelected(...)

Page 26: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

26

Slika 31: activity_vigenere_odsifrirana.xml

Slika 32: Results.java

Page 27: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

27

Slika 33: activity_results.xml

Page 28: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

28

4 Zaključek

4.1 Ocena dela

S svojim delom sem približno zadovoljen, saj sem samostojno napravil aplikacijo za

android, čeprav tega še nikoli pred to nalogo nisem naredil. Mogoče sem prav zato naletel na

mnoge težave predvsem povezane s slabim načrtovanjem, ki pa sem jih kasneje popravljal. Na

koncu pa je nastala kar solidna aplikacija za mojo raven prejšnjega znanja.

Na spodnjem grafu je razvidno koliko ur je bilo vloženih v delo.

Graf 1: Ocena ur opravljenega dela

4.2 Možne izboljšave

Pri projektu s temo kriptografije so vedno možnosti za izboljšavo. Prva možna

izboljšava bi bila narediti približen potek razvoja aplikacije, ker bi mi to v kasnejših korakih

precej olajšalo delo. Najbolj je bila moja neizkušenost očitna, ko sem se odločil, da bom za

navigacijo po aplikaciji uporabil spinner, ki pa ni optimalen za tako uporabo. Poleg tega je

njegova sintaksa precej neobičajna (vsaj za bolj začetnike), zato sem se na tem problemu mučil

kar precej časa. Nadalje je tudi v končni aplikaciji precej odvečnih delov kode, ki bi se jih

znebil. Moja neizkušenost se opazi že v postavitvi aplikacije, v kateri sem težave z

uporabnikovimi odločitvami reševal predvsem z acitvity-ji, pa čeprav to ni najlepše in najbolj

učinkovito. Tako bi zmanjšal število activity-jev na tri: glavni meni, ki bi hkrati opravljal

funkcijo izpisa podatkov in za vsako šifriranje enega. Tako bi bila tudi koda veliko čistejša in

jasnejša.

Druga sfera možnih izboljšav pa je v sami vsebini. V tako aplikacijo bi se dalo vključiti

od kakšnih eksotičnih starih šifer pa vse do današnjih nezlomljivih šifer, ki jih uporabljamo

vsakodnevno dandanes. V tako aplikacijo pa bi lahko vključil tudi kakšno anekdoto vključenih

šifer, saj bi to povečalo zanimanje za nekatere šifre, ki imajo res bogate in zanimive zgodbe.

0

5

10

15

20

25

30

35

Proučevanje gradiva Programiranje samefunkcionalnosti programa

Programiranje izgleda Pisanje dokumentacije

Ure

Ure

Page 29: Kodiranje sporoil - kriptografija - arnes.sissljskg2s/2017_18/berkopec_peter/Dokumentacija/... · Kodiranje sporoþil - kriptografija 3 Povzetek Cilj te maturitetne seminarske naloge

Kodiranje sporočil - kriptografija

29

5 Viri

• GitHub (online) [uporabljeno:31.3.2018]. Dostopno na: https://github.com/

• Singh, S..: Knjiga šifer, Umetnost šifriranja od starega Egipta do kvantne

kriptografije, Tržič, Učila International, 2006

• Smart.,N.: Cryptography: An Introduction (3rd Edition) (online) [uporabljeno:

17.2.2018]. Dostopno na: https://www.cs.umd.edu/~waa/414-F11/IntroToCrypto.pdf

• Android Studio [uporabljeno:17.3.2018]. Dostopno na:

https://developer.android.com/studio/index.html

• Štamcar, Marko [po pripovedi], Ljubljana, 2018