<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DjoleRkc</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DjoleRkc"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/DjoleRkc"/>
	<updated>2026-06-04T11:31:49Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8119</id>
		<title>Заштита података/Јун 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8119"/>
		<updated>2025-10-17T21:42:53Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 13. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u junskom roku 2023.&#039;&#039;&#039; održan je 16. juna. Održan je u dva termina (jedan SI, jedan RTI). Na RTI bilo je dostupno okruženje PyCharm kao i dokumentacija za Python. Ispit na RTI trajao je 90 minuta, a na SI sat vremena.&lt;br /&gt;
&lt;br /&gt;
== SI G1 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih kriptografskih algoritama će moći da se koriste i nakon široke dostupnosti kvantnih računara?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# DSS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;XMSS - extended Merkle Signature Scheme&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lamport Diffie&amp;lt;/span&amp;gt;&lt;br /&gt;
# Diffie-Hellman&lt;br /&gt;
# AES&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SPHINCS+&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio niti pročitao tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# AH u transportnom režimu rada&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ESP u tunel režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Na slici je dat prvi deo Kerberos v4 autentikacije:&lt;br /&gt;
* &amp;lt;math&amp;gt; (1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1 &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; (2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; \qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \right]  \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi koji nedostaju u Ticket&amp;lt;sub&amp;gt;tgs&amp;lt;/sub&amp;gt; (ne i u poruci (2)) su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# identifikator servera AS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;IP adresa klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i autentikacioni server AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i server V&lt;br /&gt;
# identifikator servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ključ kojim komuniciraju klijent i TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedinstven za svaki čip je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# PEK&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ, zvani &#039;&#039;Chip Endorsement Key&#039;&#039;, pravi proizvođač čipa (AMD) i potpisuje svojim ključem (ASK).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se slučajno generišu u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# KEK&lt;br /&gt;
# KIK&lt;br /&gt;
# VEK&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Nikola je primetio da i kada ugasi pretraživač i mejl servis, količina saobraćaja prema njegovom računaru ostaje izraženo povišena. Radi se o tipu malicioznog softvera koji se naziva &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;flooder&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tip propusta koji se nalazi u sledećem kodu naziva se &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;zadnja vrata&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if password = &amp;quot;aUtH h4ck3r&amp;quot; then login = USER_OK&lt;br /&gt;
else if correct_login(user, password) then login = USER_OK&lt;br /&gt;
else login = USER_FAILED&lt;br /&gt;
if login == USER_OK then login()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Šta se sve nalazi u strukturi RecipientInfo prilikom slanja S/MIME poruke tipa obmotani podaci? Ukoliko se broj primalaca poveća, da li se i kako menja broj ovih struktura? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o primaocu sadrži sledeće podatke:&lt;br /&gt;
* identifikator sertifikata javnog ključa primaoca,&lt;br /&gt;
* identifikatori algoritama korišćenih da se šifruje ključ sesije i sadržaj poruke, i&lt;br /&gt;
* šifrovani ključ sesije.&lt;br /&gt;
Ukoliko se broj primalaca poveća, potrebno je dodati još ovih blokova, jer svaki primalac ima različit javni ključ pa se sa svakim uspostavlja različit ključ sesije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Sledeći algoritmi omogućavaju dobijanje različitih kriptografskih ključeva u svakoj TLS razmeni i to takvih da je moguća verifikacija porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ephemeral Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonymous Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se predlažu kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Server Hello&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Finished&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Client Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 000000000000000000027e3d890d8487f45f409c6b9e3a1321a82577f00d5126&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^78&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Videti objašnjenje za [[#9. zadatak 2|deveti zadatak iz G2]].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SI G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih algoritama mogu da daju ispravne digitalne potpise koji mogu da imaju različite vrednosti za istu poruku potpisanu istim ključem?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Lamport Diffie&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;DSS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ElGamal&amp;lt;/span&amp;gt;&lt;br /&gt;
# Winternitz&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA PSS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;AH u transportnom režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# ESP u tunel režimu rada&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Authentication Header nam obezbeđuje samo autentičnost podataka, što je nama ovde potrebno, kao i zaštitu nepromenljivih polja IP zaglavlja (iako je na snimcima predavanja možda rečeno da se IP adrese mogu menjati, ovaj odgovor je bio označen kao tačan). Kako se podaci prenose između jednog servera i klijenta, i kako je potrebno obezbediti minimalno opterećenje, dovoljno je da u ovom slučaju koristimo transportni režim rada.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
* &amp;lt;math&amp;gt;(1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ K_{c,tgs} \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(3) \quad \mathbf{C \rightarrow TGS} \quad ID_v \parallel Ticket_{tgs} \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(4) \quad \mathbf{TGS \rightarrow C} \quad E\left(K_{c,tgs}, \left[ K_{c,v} \parallel ID_v \parallel TS_4 \parallel Ticket_v \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,tgs}, \left[ ID_c \parallel AD_c \parallel TS_3 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(5) \quad \mathbf{C \rightarrow V} \quad Ticket_v \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(6) \quad \mathbf{V \rightarrow C} \quad E\left(K_{c,v}, \left[TS_5 + 1\right]\right) \text{(for mutual authentication)}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,v}, \left[ ID_c \parallel AD_c \parallel TS_5 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na slici je data Kerberos v4 autentikacija. Sledeći stavovi su tačni:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Vreme &amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_4&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_5&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je javni ključ TGS&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je privatni ključ TGS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je ključ TGS koji dele TGS i AS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 &amp;lt; Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 = Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;math&amp;gt;Lifetime_2 &amp;gt; Lifetime_4&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; sprečava napadača da ponovi poruku 3 kako bi obnovio &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; dok traje &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;. Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; ne može biti privatni ključ TGS jer ga mora posedovati i AS, a kako Kerberos koristi samo simetričnu enkripciju znači da nisu uključeni javni i privatni ključevi u komunikaciji. &amp;lt;math&amp;gt;Lifetime_2&amp;lt;/math&amp;gt; mora biti duži od &amp;lt;math&amp;gt;Lifetime_4&amp;lt;/math&amp;gt; kako bi klijent mogao više puta da obnovi &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; tokom trajanja &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedini dvostruko potpisan je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# CEK&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ je potpisan od strane OCA (ključ vlasnika platforme) i CEK (ključ proizvođača čipa).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se ne koristi/koriste u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# TIK&lt;br /&gt;
# KIK&lt;br /&gt;
# KEK&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;VEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Marko je pronašao novu interesantnu igricu za svoj telefon. Pretražujući internet, Marko je pronašao sajt sa kojeg može da preuzme igricu besplatno. Kada je Marko preuzeo i instalirao igricu, aplikacija je od Marka tražila dozvolu za korišćenje nekoliko funkcionalnosti telefona. Neke od traženih dozvola su: &amp;quot;Pristup kontaktima telefona&amp;quot; i &amp;quot;Slanje SMS poruka&amp;quot;. Kojim tipom malvera je zaražena igrica? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;spamer&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koji tip malvera predstavlja sledeći fragment koda? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;logička bomba&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if datum is Friday the 13th:&lt;br /&gt;
    crash_computer();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Sledeći algoritmi ne omogućavaju verifikaciju porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonymous Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# Ephemeral Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Anonymous Diffie Hellman je osnovna varijanta Diffie-Hellman algoritma gde obe strane nemaju način da verifikuju javne ključeve druge strane pa je zato podložna man-in-the-middle napadu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se potvrđuju kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Server Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Finished&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kada klijent uspostavlja komunikaciju, u svojoj Client Hello poruci šalje predloge algoritama za korišćenje u sesiji, dok server te algoritme potvrđuje svojom prvom porukom odgoovra, odnosno Server Hello.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Kada formiramo SMIME potpisane podatke, šta sve treba da sadrži blok o pošiljaocu (&#039;&#039;signer info&#039;&#039;)? Da li broj ovih blokova zavisi od broja primalaca ili ne? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o pošiljaocu treba da sadrži:&lt;br /&gt;
* sertifikat javnog ključa potpisivača,&lt;br /&gt;
* identifikatore algoritama za kreiranje i šifrovanje potpisa poruke, i&lt;br /&gt;
* šifrovanog potpisa poruke.&lt;br /&gt;
Nije neophodno praviti više ovakvih blokova za svakog primaoca, jer se podaci u njemu ne razlikuju u zavisnosti od primaoca.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^77&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Broj 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351 u binarnoj reprezentaciji ima 77 nula na početku. Priznavan je takođe bio i odgovor 2&amp;lt;sup&amp;gt;76&amp;lt;/sup&amp;gt;, jer se u zadatku tražio prosečan broj različitih Nonce vrednosti. Odgovori 2&amp;lt;sup&amp;gt;19&amp;lt;/sup&amp;gt; i 2&amp;lt;sup&amp;gt;18&amp;lt;/sup&amp;gt; bili su priznavani sa polovinom bodova.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTI ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Isto zadatak kao i na četvrtom izazovu, samo drugačiji potpis. (Verifikacija &#039;&#039;El Gamal&#039;&#039; potpisa)&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je od navedenog tačno za eXtended Merkle Signature Scheme?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manji ključ od RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veći ključ od RSA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Mora da pamti stanje&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne mora da pamti stanje&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Može da potpisuje više dokumenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne može da potpisuje više dokumenata&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#4. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Dat je digitalni sertifikat sličan onom iz [[Заштита података/Јун 2022#2. zadatak|2. zadatka iz juna 2022.]]. Potrebno je objasniti precizno šta se sve i na koji način treba obaviti kako bi &#039;&#039;browser&#039;&#039; mogao da verifikuje sertifikat.&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Август 2021#6. zadatak|6. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Koji ključ povezuje vlasnika platforme i proizvođača hardvera u AMD-SEV lancu sertifikata?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# ARK&lt;br /&gt;
# ASK&lt;br /&gt;
# CEK&lt;br /&gt;
# OCA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Koji od navedenih sertifikata se generišu na osnovu glavne tajne?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# VEK&lt;br /&gt;
# TIK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;autentikaciju,tajnost,ne znam&amp;quot;&amp;gt;&lt;br /&gt;
* Dat je deo šeme PGP protokola. Ova šema obezbeđuje &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;autentikaciju&amp;lt;/span&amp;gt;. (Netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Датотека:ZP jun 2023 zadatak 9.svg|PGP šema uz deveti zadatak.|frame|center]]&lt;br /&gt;
Neka je pošiljalac X, a primalac Y.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Enkriptovan(PUx), ID(PUx), Enkriptovan(PUy), ID(PYx), Enkriptovan(PRx), ID(PRx), Enkriptovan(PRy), ID(PRy), PRx, PRy, PUx, PUy, lozinka&amp;quot;&amp;gt;&lt;br /&gt;
* Deo &#039;&#039;&#039;1&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;lozinka&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;2&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Enkriptovan(PRx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;3&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;ID(PUx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;4&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;PRx&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Greškom došao &#039;&#039;&#039;Chacha&#039;&#039;&#039;, to je kolokvijumsko gradivo.&lt;br /&gt;
&lt;br /&gt;
=== 11. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Precizno objasniti kako se autentikuje klijent od strane servera ako ima autentikacije kod TLS &#039;&#039;Handshake&#039;&#039; protokola.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Ako server zatraži autentikaciju klijenta tokom TLS Handshake-a, on šalje poruku CertificateRequest. Klijent tada šalje svoj sertifikat i potpisuje hash svih dosadašnjih handshake poruka svojim privatnim ključem. Server proverava potpis klijentovim javnim ključem iz sertifikata. Ako je verifikacija uspešna, klijent je uspešno autentikovan.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 12. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot;&amp;gt;&lt;br /&gt;
# GCM za tajnost koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;Counter&amp;lt;/span&amp;gt;.&lt;br /&gt;
# GCM za autentikaciju koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;CBC&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Kod GCM u procesu dešifrovanja primenjuje se &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;enkripcioni, dekripcioni&amp;quot;&amp;gt;enkripcioni&amp;lt;/span&amp;gt; algoritam.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 13. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#10. zadatak|10. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8118</id>
		<title>Заштита података/Јун 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8118"/>
		<updated>2025-10-17T21:38:51Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 11. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u junskom roku 2023.&#039;&#039;&#039; održan je 16. juna. Održan je u dva termina (jedan SI, jedan RTI). Na RTI bilo je dostupno okruženje PyCharm kao i dokumentacija za Python. Ispit na RTI trajao je 90 minuta, a na SI sat vremena.&lt;br /&gt;
&lt;br /&gt;
== SI G1 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih kriptografskih algoritama će moći da se koriste i nakon široke dostupnosti kvantnih računara?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# DSS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;XMSS - extended Merkle Signature Scheme&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lamport Diffie&amp;lt;/span&amp;gt;&lt;br /&gt;
# Diffie-Hellman&lt;br /&gt;
# AES&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SPHINCS+&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio niti pročitao tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# AH u transportnom režimu rada&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ESP u tunel režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Na slici je dat prvi deo Kerberos v4 autentikacije:&lt;br /&gt;
* &amp;lt;math&amp;gt; (1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1 &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; (2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; \qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \right]  \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi koji nedostaju u Ticket&amp;lt;sub&amp;gt;tgs&amp;lt;/sub&amp;gt; (ne i u poruci (2)) su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# identifikator servera AS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;IP adresa klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i autentikacioni server AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i server V&lt;br /&gt;
# identifikator servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ključ kojim komuniciraju klijent i TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedinstven za svaki čip je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# PEK&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ, zvani &#039;&#039;Chip Endorsement Key&#039;&#039;, pravi proizvođač čipa (AMD) i potpisuje svojim ključem (ASK).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se slučajno generišu u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# KEK&lt;br /&gt;
# KIK&lt;br /&gt;
# VEK&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Nikola je primetio da i kada ugasi pretraživač i mejl servis, količina saobraćaja prema njegovom računaru ostaje izraženo povišena. Radi se o tipu malicioznog softvera koji se naziva &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;flooder&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tip propusta koji se nalazi u sledećem kodu naziva se &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;zadnja vrata&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if password = &amp;quot;aUtH h4ck3r&amp;quot; then login = USER_OK&lt;br /&gt;
else if correct_login(user, password) then login = USER_OK&lt;br /&gt;
else login = USER_FAILED&lt;br /&gt;
if login == USER_OK then login()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Šta se sve nalazi u strukturi RecipientInfo prilikom slanja S/MIME poruke tipa obmotani podaci? Ukoliko se broj primalaca poveća, da li se i kako menja broj ovih struktura? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o primaocu sadrži sledeće podatke:&lt;br /&gt;
* identifikator sertifikata javnog ključa primaoca,&lt;br /&gt;
* identifikatori algoritama korišćenih da se šifruje ključ sesije i sadržaj poruke, i&lt;br /&gt;
* šifrovani ključ sesije.&lt;br /&gt;
Ukoliko se broj primalaca poveća, potrebno je dodati još ovih blokova, jer svaki primalac ima različit javni ključ pa se sa svakim uspostavlja različit ključ sesije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Sledeći algoritmi omogućavaju dobijanje različitih kriptografskih ključeva u svakoj TLS razmeni i to takvih da je moguća verifikacija porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ephemeral Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonymous Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se predlažu kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Server Hello&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Finished&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Client Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 000000000000000000027e3d890d8487f45f409c6b9e3a1321a82577f00d5126&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^78&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Videti objašnjenje za [[#9. zadatak 2|deveti zadatak iz G2]].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SI G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih algoritama mogu da daju ispravne digitalne potpise koji mogu da imaju različite vrednosti za istu poruku potpisanu istim ključem?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Lamport Diffie&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;DSS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ElGamal&amp;lt;/span&amp;gt;&lt;br /&gt;
# Winternitz&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA PSS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;AH u transportnom režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# ESP u tunel režimu rada&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Authentication Header nam obezbeđuje samo autentičnost podataka, što je nama ovde potrebno, kao i zaštitu nepromenljivih polja IP zaglavlja (iako je na snimcima predavanja možda rečeno da se IP adrese mogu menjati, ovaj odgovor je bio označen kao tačan). Kako se podaci prenose između jednog servera i klijenta, i kako je potrebno obezbediti minimalno opterećenje, dovoljno je da u ovom slučaju koristimo transportni režim rada.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
* &amp;lt;math&amp;gt;(1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ K_{c,tgs} \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(3) \quad \mathbf{C \rightarrow TGS} \quad ID_v \parallel Ticket_{tgs} \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(4) \quad \mathbf{TGS \rightarrow C} \quad E\left(K_{c,tgs}, \left[ K_{c,v} \parallel ID_v \parallel TS_4 \parallel Ticket_v \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,tgs}, \left[ ID_c \parallel AD_c \parallel TS_3 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(5) \quad \mathbf{C \rightarrow V} \quad Ticket_v \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(6) \quad \mathbf{V \rightarrow C} \quad E\left(K_{c,v}, \left[TS_5 + 1\right]\right) \text{(for mutual authentication)}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,v}, \left[ ID_c \parallel AD_c \parallel TS_5 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na slici je data Kerberos v4 autentikacija. Sledeći stavovi su tačni:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Vreme &amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_4&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_5&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je javni ključ TGS&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je privatni ključ TGS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je ključ TGS koji dele TGS i AS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 &amp;lt; Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 = Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;math&amp;gt;Lifetime_2 &amp;gt; Lifetime_4&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; sprečava napadača da ponovi poruku 3 kako bi obnovio &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; dok traje &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;. Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; ne može biti privatni ključ TGS jer ga mora posedovati i AS, a kako Kerberos koristi samo simetričnu enkripciju znači da nisu uključeni javni i privatni ključevi u komunikaciji. &amp;lt;math&amp;gt;Lifetime_2&amp;lt;/math&amp;gt; mora biti duži od &amp;lt;math&amp;gt;Lifetime_4&amp;lt;/math&amp;gt; kako bi klijent mogao više puta da obnovi &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; tokom trajanja &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedini dvostruko potpisan je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# CEK&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ je potpisan od strane OCA (ključ vlasnika platforme) i CEK (ključ proizvođača čipa).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se ne koristi/koriste u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# TIK&lt;br /&gt;
# KIK&lt;br /&gt;
# KEK&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;VEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Marko je pronašao novu interesantnu igricu za svoj telefon. Pretražujući internet, Marko je pronašao sajt sa kojeg može da preuzme igricu besplatno. Kada je Marko preuzeo i instalirao igricu, aplikacija je od Marka tražila dozvolu za korišćenje nekoliko funkcionalnosti telefona. Neke od traženih dozvola su: &amp;quot;Pristup kontaktima telefona&amp;quot; i &amp;quot;Slanje SMS poruka&amp;quot;. Kojim tipom malvera je zaražena igrica? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;spamer&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koji tip malvera predstavlja sledeći fragment koda? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;logička bomba&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if datum is Friday the 13th:&lt;br /&gt;
    crash_computer();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Sledeći algoritmi ne omogućavaju verifikaciju porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonymous Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# Ephemeral Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Anonymous Diffie Hellman je osnovna varijanta Diffie-Hellman algoritma gde obe strane nemaju način da verifikuju javne ključeve druge strane pa je zato podložna man-in-the-middle napadu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se potvrđuju kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Server Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Finished&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kada klijent uspostavlja komunikaciju, u svojoj Client Hello poruci šalje predloge algoritama za korišćenje u sesiji, dok server te algoritme potvrđuje svojom prvom porukom odgoovra, odnosno Server Hello.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Kada formiramo SMIME potpisane podatke, šta sve treba da sadrži blok o pošiljaocu (&#039;&#039;signer info&#039;&#039;)? Da li broj ovih blokova zavisi od broja primalaca ili ne? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o pošiljaocu treba da sadrži:&lt;br /&gt;
* sertifikat javnog ključa potpisivača,&lt;br /&gt;
* identifikatore algoritama za kreiranje i šifrovanje potpisa poruke, i&lt;br /&gt;
* šifrovanog potpisa poruke.&lt;br /&gt;
Nije neophodno praviti više ovakvih blokova za svakog primaoca, jer se podaci u njemu ne razlikuju u zavisnosti od primaoca.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^77&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Broj 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351 u binarnoj reprezentaciji ima 77 nula na početku. Priznavan je takođe bio i odgovor 2&amp;lt;sup&amp;gt;76&amp;lt;/sup&amp;gt;, jer se u zadatku tražio prosečan broj različitih Nonce vrednosti. Odgovori 2&amp;lt;sup&amp;gt;19&amp;lt;/sup&amp;gt; i 2&amp;lt;sup&amp;gt;18&amp;lt;/sup&amp;gt; bili su priznavani sa polovinom bodova.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTI ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Isto zadatak kao i na četvrtom izazovu, samo drugačiji potpis. (Verifikacija &#039;&#039;El Gamal&#039;&#039; potpisa)&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je od navedenog tačno za eXtended Merkle Signature Scheme?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manji ključ od RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veći ključ od RSA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Mora da pamti stanje&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne mora da pamti stanje&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Može da potpisuje više dokumenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne može da potpisuje više dokumenata&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#4. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Dat je digitalni sertifikat sličan onom iz [[Заштита података/Јун 2022#2. zadatak|2. zadatka iz juna 2022.]]. Potrebno je objasniti precizno šta se sve i na koji način treba obaviti kako bi &#039;&#039;browser&#039;&#039; mogao da verifikuje sertifikat.&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Август 2021#6. zadatak|6. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Koji ključ povezuje vlasnika platforme i proizvođača hardvera u AMD-SEV lancu sertifikata?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# ARK&lt;br /&gt;
# ASK&lt;br /&gt;
# CEK&lt;br /&gt;
# OCA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Koji od navedenih sertifikata se generišu na osnovu glavne tajne?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# VEK&lt;br /&gt;
# TIK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;autentikaciju,tajnost,ne znam&amp;quot;&amp;gt;&lt;br /&gt;
* Dat je deo šeme PGP protokola. Ova šema obezbeđuje &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;autentikaciju&amp;lt;/span&amp;gt;. (Netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Датотека:ZP jun 2023 zadatak 9.svg|PGP šema uz deveti zadatak.|frame|center]]&lt;br /&gt;
Neka je pošiljalac X, a primalac Y.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Enkriptovan(PUx), ID(PUx), Enkriptovan(PUy), ID(PYx), Enkriptovan(PRx), ID(PRx), Enkriptovan(PRy), ID(PRy), PRx, PRy, PUx, PUy, lozinka&amp;quot;&amp;gt;&lt;br /&gt;
* Deo &#039;&#039;&#039;1&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;lozinka&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;2&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Enkriptovan(PRx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;3&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;ID(PUx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;4&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;PRx&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Greškom došao &#039;&#039;&#039;Chacha&#039;&#039;&#039;, to je kolokvijumsko gradivo.&lt;br /&gt;
&lt;br /&gt;
=== 11. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Precizno objasniti kako se autentikuje klijent od strane servera ako ima autentikacije kod TLS &#039;&#039;Handshake&#039;&#039; protokola.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Ako server zatraži autentikaciju klijenta tokom TLS Handshake-a, on šalje poruku CertificateRequest. Klijent tada šalje svoj sertifikat i potpisuje hash svih dosadašnjih handshake poruka svojim privatnim ključem. Server proverava potpis klijentovim javnim ključem iz sertifikata. Ako je verifikacija uspešna, klijent je uspešno autentikovan.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 12. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot;&amp;gt;&lt;br /&gt;
# GCM za tajnost koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;Counter&amp;lt;/span&amp;gt;.&lt;br /&gt;
# GCM za autentikaciju koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;CBC&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Kod GCM u procesu dešifrovanja primenjuje se &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;enkripcioni, dekripcioni&amp;quot;&amp;gt;enkripcioni&amp;lt;/span&amp;gt; algoritam.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 13. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#10. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8117</id>
		<title>Заштита података/Јун 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%88%D1%83%D0%BD_2023&amp;diff=8117"/>
		<updated>2025-10-17T21:38:37Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 11. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u junskom roku 2023.&#039;&#039;&#039; održan je 16. juna. Održan je u dva termina (jedan SI, jedan RTI). Na RTI bilo je dostupno okruženje PyCharm kao i dokumentacija za Python. Ispit na RTI trajao je 90 minuta, a na SI sat vremena.&lt;br /&gt;
&lt;br /&gt;
== SI G1 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih kriptografskih algoritama će moći da se koriste i nakon široke dostupnosti kvantnih računara?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# DSS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;XMSS - extended Merkle Signature Scheme&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lamport Diffie&amp;lt;/span&amp;gt;&lt;br /&gt;
# Diffie-Hellman&lt;br /&gt;
# AES&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SPHINCS+&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio niti pročitao tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# AH u transportnom režimu rada&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ESP u tunel režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Na slici je dat prvi deo Kerberos v4 autentikacije:&lt;br /&gt;
* &amp;lt;math&amp;gt; (1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1 &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; (2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt; \qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ \qquad \parallel TS_2 \parallel Lifetime_2 \right]  \right) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elementi koji nedostaju u Ticket&amp;lt;sub&amp;gt;tgs&amp;lt;/sub&amp;gt; (ne i u poruci (2)) su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# identifikator servera AS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;identifikator klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;IP adresa klijenta C&amp;lt;/span&amp;gt;&lt;br /&gt;
# IP adresa servera AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i autentikacioni server AS&lt;br /&gt;
# ključ kojim komuniciraju klijent i server V&lt;br /&gt;
# identifikator servera V&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ključ kojim komuniciraju klijent i TGS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedinstven za svaki čip je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# PEK&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;CEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ, zvani &#039;&#039;Chip Endorsement Key&#039;&#039;, pravi proizvođač čipa (AMD) i potpisuje svojim ključem (ASK).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se slučajno generišu u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;TIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# KEK&lt;br /&gt;
# KIK&lt;br /&gt;
# VEK&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Nikola je primetio da i kada ugasi pretraživač i mejl servis, količina saobraćaja prema njegovom računaru ostaje izraženo povišena. Radi se o tipu malicioznog softvera koji se naziva &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;flooder&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tip propusta koji se nalazi u sledećem kodu naziva se &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;zadnja vrata&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if password = &amp;quot;aUtH h4ck3r&amp;quot; then login = USER_OK&lt;br /&gt;
else if correct_login(user, password) then login = USER_OK&lt;br /&gt;
else login = USER_FAILED&lt;br /&gt;
if login == USER_OK then login()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Šta se sve nalazi u strukturi RecipientInfo prilikom slanja S/MIME poruke tipa obmotani podaci? Ukoliko se broj primalaca poveća, da li se i kako menja broj ovih struktura? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o primaocu sadrži sledeće podatke:&lt;br /&gt;
* identifikator sertifikata javnog ključa primaoca,&lt;br /&gt;
* identifikatori algoritama korišćenih da se šifruje ključ sesije i sadržaj poruke, i&lt;br /&gt;
* šifrovani ključ sesije.&lt;br /&gt;
Ukoliko se broj primalaca poveća, potrebno je dodati još ovih blokova, jer svaki primalac ima različit javni ključ pa se sa svakim uspostavlja različit ključ sesije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Sledeći algoritmi omogućavaju dobijanje različitih kriptografskih ključeva u svakoj TLS razmeni i to takvih da je moguća verifikacija porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ephemeral Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# Anonymous Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se predlažu kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Server Hello&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Finished&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Client Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 000000000000000000027e3d890d8487f45f409c6b9e3a1321a82577f00d5126&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^78&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Videti objašnjenje za [[#9. zadatak 2|deveti zadatak iz G2]].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SI G2 ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Koji od navedenih algoritama mogu da daju ispravne digitalne potpise koji mogu da imaju različite vrednosti za istu poruku potpisanu istim ključem?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Lamport Diffie&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;DSS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ElGamal&amp;lt;/span&amp;gt;&lt;br /&gt;
# Winternitz&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;RSA PSS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Potrebno je obezbediti zaštitu transfera veb sadržaja između veb servera A i veb klijenta B koji se nalaze povezani na internet. Ono što je neophodno obezbediti je da strana koja prima poruke u svakom trenutku bude sigurna da podatke koji se prenose niko nije promenio tokom prenosa, kao i sa koje tačno IP adrese su paketi došli. Pri tome potrebno je obezbediti minimalno opterećenje, kako procesora, tako i mrežne veze veb servera. Protokol koji zadovoljava sve prethodno postavljene kriterijume je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;AH u transportnom režimu rada&amp;lt;/span&amp;gt;&lt;br /&gt;
# ESP u tunel režimu rada&lt;br /&gt;
# IKE&lt;br /&gt;
# TLS&lt;br /&gt;
# AH u tunel režimu rada&lt;br /&gt;
# QUIC&lt;br /&gt;
# ESP u transportnom režimu rada&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Authentication Header nam obezbeđuje samo autentičnost podataka, što je nama ovde potrebno, kao i zaštitu nepromenljivih polja IP zaglavlja (iako je na snimcima predavanja možda rečeno da se IP adrese mogu menjati, ovaj odgovor je bio označen kao tačan). Kako se podaci prenose između jednog servera i klijenta, i kako je potrebno obezbediti minimalno opterećenje, dovoljno je da u ovom slučaju koristimo transportni režim rada.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
* &amp;lt;math&amp;gt;(1) \quad \mathbf{C \rightarrow AS} \quad ID_c \parallel ID_{tgs} \parallel TS_1&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(2) \quad \mathbf{AS \rightarrow C} \quad E\left( K_c, \left[ K_{c,tgs} \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \parallel Ticket_{tgs} \right] \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(3) \quad \mathbf{C \rightarrow TGS} \quad ID_v \parallel Ticket_{tgs} \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(4) \quad \mathbf{TGS \rightarrow C} \quad E\left(K_{c,tgs}, \left[ K_{c,v} \parallel ID_v \parallel TS_4 \parallel Ticket_v \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_{tgs} = E\left( K_{tgs}, \left[ K_{c,tgs} \parallel ID_c \parallel AD_c \parallel ID_{tgs} \parallel TS_2 \parallel Lifetime_2 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,tgs}, \left[ ID_c \parallel AD_c \parallel TS_3 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(5) \quad \mathbf{C \rightarrow V} \quad Ticket_v \parallel Authenticator_c&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;(6) \quad \mathbf{V \rightarrow C} \quad E\left(K_{c,v}, \left[TS_5 + 1\right]\right) \text{(for mutual authentication)}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Ticket_v = E\left( K_v, \left[ K_{c,v} \parallel ID_c \parallel AD_c \parallel ID_v \parallel TS_4 \parallel Lifetime_4 \right]  \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\qquad Authenticator_c = E\left(K_{c,v}, \left[ ID_c \parallel AD_c \parallel TS_5 \right]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na slici je data Kerberos v4 autentikacija. Sledeći stavovi su tačni:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Vreme &amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_4&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Vreme &amp;lt;math&amp;gt;TS_5&amp;lt;/math&amp;gt; služi za to da spreči &#039;&#039;Replay&#039;&#039; napad tokom vremena trajanja tiketa &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je javni ključ TGS&lt;br /&gt;
# Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je privatni ključ TGS&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; je ključ TGS koji dele TGS i AS&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 &amp;lt; Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;Lifetime_2 = Lifetime_4&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;math&amp;gt;Lifetime_2 &amp;gt; Lifetime_4&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&amp;lt;math&amp;gt;TS_3&amp;lt;/math&amp;gt; sprečava napadača da ponovi poruku 3 kako bi obnovio &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; dok traje &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;. Ključ &amp;lt;math&amp;gt;K_{tgs}&amp;lt;/math&amp;gt; ne može biti privatni ključ TGS jer ga mora posedovati i AS, a kako Kerberos koristi samo simetričnu enkripciju znači da nisu uključeni javni i privatni ključevi u komunikaciji. &amp;lt;math&amp;gt;Lifetime_2&amp;lt;/math&amp;gt; mora biti duži od &amp;lt;math&amp;gt;Lifetime_4&amp;lt;/math&amp;gt; kako bi klijent mogao više puta da obnovi &amp;lt;math&amp;gt;Ticket_v&amp;lt;/math&amp;gt; tokom trajanja &amp;lt;math&amp;gt;Ticket_{tgs}&amp;lt;/math&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
U AMD SEV lancu sertifikata par ključeva koji je jedini dvostruko potpisan je:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# ASK&lt;br /&gt;
# ARK&lt;br /&gt;
# CEK&lt;br /&gt;
# PDH&lt;br /&gt;
# OCA&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ovaj ključ je potpisan od strane OCA (ključ vlasnika platforme) i CEK (ključ proizvođača čipa).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Ključ(evi) koji se ne koristi/koriste u AMD SEV sigurnoj komunikaciji između klijenta i servera je/su:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# TIK&lt;br /&gt;
# KIK&lt;br /&gt;
# KEK&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;VEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;logička bomba,zadnja vrata,rootkit,spamer,keylogger,flooder,downloader,adware,ransomware&amp;quot;&amp;gt;&lt;br /&gt;
# Marko je pronašao novu interesantnu igricu za svoj telefon. Pretražujući internet, Marko je pronašao sajt sa kojeg može da preuzme igricu besplatno. Kada je Marko preuzeo i instalirao igricu, aplikacija je od Marka tražila dozvolu za korišćenje nekoliko funkcionalnosti telefona. Neke od traženih dozvola su: &amp;quot;Pristup kontaktima telefona&amp;quot; i &amp;quot;Slanje SMS poruka&amp;quot;. Kojim tipom malvera je zaražena igrica? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;spamer&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koji tip malvera predstavlja sledeći fragment koda? &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;logička bomba&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if datum is Friday the 13th:&lt;br /&gt;
    crash_computer();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Sledeći algoritmi ne omogućavaju verifikaciju porekla ključeva.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Anonymous Diffie Hellman&amp;lt;/span&amp;gt;&lt;br /&gt;
# RSA&lt;br /&gt;
# Ephemeral Diffie Hellman&lt;br /&gt;
# Fixed Diffie Hellman&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Anonymous Diffie Hellman je osnovna varijanta Diffie-Hellman algoritma gde obe strane nemaju način da verifikuju javne ključeve druge strane pa je zato podložna man-in-the-middle napadu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovom porukom se potvrđuju kriptografski algoritmi koji će biti korišćeni u toku TLS sesije:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Client Hello Done&lt;br /&gt;
# Certificate Request&lt;br /&gt;
# Change Cipher Specification&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Server Hello&amp;lt;/span&amp;gt;&lt;br /&gt;
# Finished&lt;br /&gt;
# Server Hello Done&lt;br /&gt;
# Client Hello&lt;br /&gt;
# Certificate Verify&lt;br /&gt;
# Client Key Exchange&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Kada klijent uspostavlja komunikaciju, u svojoj Client Hello poruci šalje predloge algoritama za korišćenje u sesiji, dok server te algoritme potvrđuje svojom prvom porukom odgoovra, odnosno Server Hello.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Kada formiramo SMIME potpisane podatke, šta sve treba da sadrži blok o pošiljaocu (&#039;&#039;signer info&#039;&#039;)? Da li broj ovih blokova zavisi od broja primalaca ili ne? Obrazložiti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Blok o pošiljaocu treba da sadrži:&lt;br /&gt;
* sertifikat javnog ključa potpisivača,&lt;br /&gt;
* identifikatore algoritama za kreiranje i šifrovanje potpisa poruke, i&lt;br /&gt;
* šifrovanog potpisa poruke.&lt;br /&gt;
Nije neophodno praviti više ovakvih blokova za svakog primaoca, jer se podaci u njemu ne razlikuju u zavisnosti od primaoca.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Prikazano je zaglavlje jednog bloka transakcija na bitcoin blokčejnu. Ako prikazani hash odslikava zahtevanu težinu problema potvrde bloka, koliko je prosečno potrebno različitih Nonce vrednosti da bude isprobano dok se ne dobije odgovarajuća potvrda transakcije? Smatrati da je raspodela hash funkcije uniformna. Odgovor dati u obliku &#039;&#039;2^n&#039;&#039;.&lt;br /&gt;
* Number Of Transactions: 1502&lt;br /&gt;
* Transaction Volume: 316.33241479 BTC&lt;br /&gt;
* Transaction Fees: 0.06640796 BTC&lt;br /&gt;
* Height: 685698&lt;br /&gt;
* Time: 2021-05-31 22:38:48&lt;br /&gt;
* Bits: 386752379&lt;br /&gt;
* Size: 896,885(bytes)&lt;br /&gt;
* Version: 536870916&lt;br /&gt;
* Nonce: 432023578&lt;br /&gt;
* Block Reward: 6.25 BTC&lt;br /&gt;
* Days Destroyed: 6,678&lt;br /&gt;
* Hash: 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^77&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Broj 00000000000000000007ab43dfc1a8f73101f5fa2cd85dea59cdaf8f8d858351 u binarnoj reprezentaciji ima 77 nula na početku. Priznavan je takođe bio i odgovor 2&amp;lt;sup&amp;gt;76&amp;lt;/sup&amp;gt;, jer se u zadatku tražio prosečan broj različitih Nonce vrednosti. Odgovori 2&amp;lt;sup&amp;gt;19&amp;lt;/sup&amp;gt; i 2&amp;lt;sup&amp;gt;18&amp;lt;/sup&amp;gt; bili su priznavani sa polovinom bodova.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTI ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Isto zadatak kao i na četvrtom izazovu, samo drugačiji potpis. (Verifikacija &#039;&#039;El Gamal&#039;&#039; potpisa)&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je od navedenog tačno za eXtended Merkle Signature Scheme?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manji ključ od RSA&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veći ključ od RSA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Mora da pamti stanje&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne mora da pamti stanje&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Može da potpisuje više dokumenata&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne može da potpisuje više dokumenata&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#4. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Dat je digitalni sertifikat sličan onom iz [[Заштита података/Јун 2022#2. zadatak|2. zadatka iz juna 2022.]]. Potrebno je objasniti precizno šta se sve i na koji način treba obaviti kako bi &#039;&#039;browser&#039;&#039; mogao da verifikuje sertifikat.&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Август 2021#6. zadatak|6. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Koji ključ povezuje vlasnika platforme i proizvođača hardvera u AMD-SEV lancu sertifikata?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# ARK&lt;br /&gt;
# ASK&lt;br /&gt;
# CEK&lt;br /&gt;
# OCA&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;PEK&amp;lt;/span&amp;gt;&lt;br /&gt;
# PDH&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Koji od navedenih sertifikata se generišu na osnovu glavne tajne?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# VEK&lt;br /&gt;
# TIK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KIK&amp;lt;/span&amp;gt;&lt;br /&gt;
# TEK&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;KEK&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;autentikaciju,tajnost,ne znam&amp;quot;&amp;gt;&lt;br /&gt;
* Dat je deo šeme PGP protokola. Ova šema obezbeđuje &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;autentikaciju&amp;lt;/span&amp;gt;. (Netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Датотека:ZP jun 2023 zadatak 9.svg|PGP šema uz deveti zadatak.|frame|center]]&lt;br /&gt;
Neka je pošiljalac X, a primalac Y.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;Enkriptovan(PUx), ID(PUx), Enkriptovan(PUy), ID(PYx), Enkriptovan(PRx), ID(PRx), Enkriptovan(PRy), ID(PRy), PRx, PRy, PUx, PUy, lozinka&amp;quot;&amp;gt;&lt;br /&gt;
* Deo &#039;&#039;&#039;1&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;lozinka&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;2&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;Enkriptovan(PRx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;3&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;ID(PUx)&amp;lt;/span&amp;gt;.&lt;br /&gt;
* Deo &#039;&#039;&#039;4&#039;&#039;&#039; je zapravo &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;PRx&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Greškom došao &#039;&#039;&#039;Chacha&#039;&#039;&#039;, to je kolokvijumsko gradivo.&lt;br /&gt;
&lt;br /&gt;
=== 11. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[5 poena]&#039;&#039;&#039; Precizno objasniti kako se autentikuje klijent od strane servera ako ima autentikacije kod TLS &#039;&#039;Handshake&#039;&#039; protokola.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Ako server zatraži autentikaciju klijenta tokom TLS Handshake-a, on šalje poruku CertificateRequest. Klijent tada šalje svoj sertifikat i potpisuje hash svih dosadašnjih handshake poruka svojim privatnim ključem. Server proverava potpis klijentovim javnim ključem iz sertifikata. Ako je verifikacija uspešna, klijent je uspešno autentikovan.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 12. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; &amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;select&amp;quot;&amp;gt;&lt;br /&gt;
# GCM za tajnost koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;Counter&amp;lt;/span&amp;gt;.&lt;br /&gt;
# GCM za autentikaciju koristi &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;ECB,CBC,CFB,OFB,Counter,CCM&amp;quot;&amp;gt;CBC&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Kod GCM u procesu dešifrovanja primenjuje se &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-options=&amp;quot;enkripcioni, dekripcioni&amp;quot;&amp;gt;enkripcioni&amp;lt;/span&amp;gt; algoritam.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 13. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i [[Заштита података/Јун 2022#10. zadatak|4. zadatak iz juna 2022.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8116</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8116"/>
		<updated>2025-10-16T17:55:57Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
U Intel SGX je napravljeno hardversko rešenje, dok AMD SEV pravi sigurnu (šifrovanu) virtuelnu mašinu. Intel SGX štiti male delove (&amp;quot;enklave&amp;quot;) podataka, dok AMD SEV štiti celu RAM memoriju virtuelne mašine.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &lt;br /&gt;
&amp;lt;span  class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
text/ - Koristi se za tekstualne podatke (Na primer text/plain – običan tekst bez formatiranja). image/ - Koristi se za slike (Na primer image/jpeg). audio/ - Koristi se za zvučne (audio) podatke (Na primer audio/mpeg). video/ - Koristi se za video zapise (Na primer video/mp4). application/ - Koristi se za binarne podatke i dokumente koji nisu direktno tekstualni (Na primer application/json). multipart/ - Koristi se za kombinovanje više delova u jednoj poruci (npr. tekst + prilozi) (Na primer multipart/mixed – mešoviti sadržaj (npr. tekst + datoteke)). message/ - Koristi se kada poruka sadrži drugu poruku e-pošte (Na primer message/delivery-status – izveštaj o isporuci).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &lt;br /&gt;
&amp;lt;span  class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;TS_4, lifetime_4, ID_c, ID_v, AD_c, K_v, K_cv&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8115</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8115"/>
		<updated>2025-10-16T17:55:02Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 8. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
U Intel SGX je napravljeno hardversko rešenje, dok AMD SEV pravi sigurnu (šifrovanu) virtuelnu mašinu. Intel SGX štiti male delove (&amp;quot;enklave&amp;quot;) podataka, dok AMD SEV štiti celu RAM memoriju virtuelne mašine.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &lt;br /&gt;
&amp;lt;span  class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
text/ - Koristi se za tekstualne podatke (Na primer text/plain – običan tekst bez formatiranja). image/ - Koristi se za slike (Na primer image/jpeg). audio/ - Koristi se za zvučne (audio) podatke (Na primer audio/mpeg). video/ - Koristi se za video zapise (Na primer video/mp4). application/ - Koristi se za binarne podatke i dokumente koji nisu direktno tekstualni (Na primer application/json). multipart/ - Koristi se za kombinovanje više delova u jednoj poruci (npr. tekst + prilozi) (Na primer multipart/mixed – mešoviti sadržaj (npr. tekst + datoteke)). message/ - Koristi se kada poruka sadrži drugu poruku e-pošte (Na primer message/delivery-status – izveštaj o isporuci).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &lt;br /&gt;
&amp;lt;span  class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;TS_4, lifetime_4, ID_c, ID_v, AD_c, K_v, K_cv&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8114</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8114"/>
		<updated>2025-10-16T17:48:13Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 6. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
U Intel SGX je napravljeno hardversko rešenje, dok AMD SEV pravi sigurnu (šifrovanu) virtuelnu mašinu. Intel SGX štiti male delove (&amp;quot;enklave&amp;quot;) podataka, dok AMD SEV štiti celu RAM memoriju virtuelne mašine.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &lt;br /&gt;
&amp;lt;span  class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
text/ - Koristi se za tekstualne podatke (Na primer text/plain – običan tekst bez formatiranja). image/ - Koristi se za slike (Na primer image/jpeg). audio/ - Koristi se za zvučne (audio) podatke (Na primer audio/mpeg). video/ - Koristi se za video zapise (Na primer video/mp4). application/ - Koristi se za binarne podatke i dokumente koji nisu direktno tekstualni (Na primer application/json). multipart/ - Koristi se za kombinovanje više delova u jednoj poruci (npr. tekst + prilozi) (Na primer multipart/mixed – mešoviti sadržaj (npr. tekst + datoteke)). message/ - Koristi se kada poruka sadrži drugu poruku e-pošte (Na primer message/delivery-status – izveštaj o isporuci).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8113</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8113"/>
		<updated>2025-10-16T17:37:41Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 5. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
U Intel SGX je napravljeno hardversko rešenje, dok AMD SEV pravi sigurnu (šifrovanu) virtuelnu mašinu. Intel SGX štiti male delove (&amp;quot;enklave&amp;quot;) podataka, dok AMD SEV štiti celu RAM memoriju virtuelne mašine.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8112</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8112"/>
		<updated>2025-10-16T17:31:47Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 4. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8111</id>
		<title>Заштита података/Август 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2023&amp;diff=8111"/>
		<updated>2025-10-16T17:23:33Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 3. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2023. godine&#039;&#039;&#039; na održan je 28. avgusta. Postavka ispod je parcijalni ispit za RTI.&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
U PKI infrastrukturi sa entitetima, koje od funkcija treba da budu omogućene krajnjem korisniku u komunikaciji sa sertifikacionim autoritetom? &lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sertifikacija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje liste povučenih sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Registracija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objavljivanje sertifikata&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Ažuriranje para ključeva&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Zahtev za povlačenjem&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dohvatanje sertifikata/Liste povućenih sertifikata&lt;br /&gt;
# kombinacija drugog i četvrtog odgovora?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
A prebacuje X bitkoina korisniku B. Korisnik A mora da uradi sledeće:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Da izračuna Nonce za potvrdu bloka&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Da digitalno potpiše transakciju DSA algoritmom&amp;lt;/span&amp;gt;&lt;br /&gt;
# Da šifruje transakciju RSA algoritmom&lt;br /&gt;
# Da izračuna Merkle stablo transakcija&lt;br /&gt;
# Da šifruje blok u kom je transakcija&lt;br /&gt;
# Da šifruje transakciju AES algoritmom&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
TLS record protocol. Ako se sa weba skida veliki fajl, objasniti na koji način će taj fajl biti prenet sa pretraživača i koji će sigurnosni mehanizmi biti primenjeni na njega?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&lt;br /&gt;
Fajl će prvo biti podeljen na fragmente, zatim se svaki fragment komprimuje, pa enkriptuje i tako šalje sa pretraživača putem TCP-a. Sigurnosni mehanizmi koji će biti primenjeni su obezbeđivanje tajnosti simetričnim šifrovanjem deljenim tajnim ključem dobijenim tokom handshake-a i biće očuvan integritet poruke korišćenjem HMAC sa deljenim tajnim ključem.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Izabrati odgovor koji opisuje generisanje i distribuciju ključa za simetrično šifrovanje u okviru PGP-a.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Za svaku komunikaciju se generiše po jedan ključ sa istim algoritmom na obe strane&lt;br /&gt;
# Generiše se master ključ i šalje uz poruku prilikom uspostavljanja komunikacije i koji će se koristiti za svaku narednu razmenu poruka&lt;br /&gt;
# Generiše se kljuć koji se razmenjuje između korisnika &#039;&#039;offline&#039;&#039; i koristi prilikom svake njihove komunikacije&lt;br /&gt;
# &#039;&#039;KDC&#039;&#039; šalje pošiljaocu i primaocu sesijski kljuc koji se koristi za razmenu jedne poruke&lt;br /&gt;
# Prilikom svakog šifrovanja generiše se sesijski ključ i distribuira zajedno sa porukom&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
Koja je razlika između &#039;&#039;Intel SGX&#039;&#039; i &#039;&#039;AMD SEV&#039;&#039; pristupa obezbeđivanju zaštite podataka u upotrebi?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Navesti tipove sadržaja MIME poruka i objasniti ih.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Isti zadatak kao i [[Заштита података/Август 2021#1. zadatak|4. zadatak iz avgusta 2021.]]&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
(3) &amp;lt;math&amp;gt; C \rightarrow TGS  \quad    IDv || Ticket_TGS || Authenticator_C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(4) &amp;lt;math&amp;gt;TGS \rightarrow C \quad  E(K_c,tgs [ K_c,v || ID_v || TS_4 || Ticket_V])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Koje elemente sadrži &amp;lt;math&amp;gt;Ticket_V&amp;lt;/math&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Isti zadatak kao [[Заштита података/Јул_2021#12._zadatak|12. zadatak iz jula 2021.]]&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8103</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8103"/>
		<updated>2025-10-09T16:32:56Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 2. задатак */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} &amp;gt; \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, па пошто није било података који могу да се споје по обе колоне, десни део дељења је празна табела, због чега се заправо добију само шифре свих радника који су радили на неком од послова (из левог дела израза).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
SELECT R.SifR&lt;br /&gt;
FROM Radnik R&lt;br /&gt;
WHERE NOT EXISTS(&lt;br /&gt;
	SELECT P.SifJ&lt;br /&gt;
    FROM Posao P NATURAL JOIN Projekat Pr&lt;br /&gt;
    WHERE Pr.Naziv = &amp;quot;ЕТФ&amp;quot; AND R.SifR NOT IN(&lt;br /&gt;
    	SELECT A.SifR&lt;br /&gt;
        FROM Angazman A &lt;br /&gt;
        WHERE A.SifJ = P.SifJ&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=8098</id>
		<title>Заштита података/Август 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=8098"/>
		<updated>2025-10-02T14:14:06Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: Поништена измена бр. 8097 корисника DjoleRkc (разговор) nisam video tekst zadatka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2021. godine&#039;&#039;&#039; na održan je 26. avgusta i trajao je dva sata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Ana je šifrovala svoju poruku RSA algoritmom koristeći svoj privatni ključ (&amp;lt;math&amp;gt;n=437, e=317&amp;lt;/math&amp;gt;). Vrednost šifrovane poruke je &amp;lt;math&amp;gt;C=101&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
(Pomoć: pretragu inverznog elementa krenuti od najmanjih vrednosti nepoznate)&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti Anin privatni ključ &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti vrednost originalne poruke M: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;100&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na ovaj način šifrovane poruke &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; ima obezbeđeno:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poreklo poruke M&amp;lt;/span&amp;gt;&lt;br /&gt;
* Poverljivost poruke M&lt;br /&gt;
* I poreklo i poverljivost poruke M&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Na slici je dat deo SAML odgovora koji Identity provider šalje Service provideru kroz browser korisnika. U okviru odgovora se nalaze message digest, digitalni potpis i digitalni sertifikat Identity providera. Objasniti čemu služe elementi SAML odgovora i na koji način će ih Service provider koristiti za proveru odgovora.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samlp:Response xmlns:samlp=&amp;quot;urn:oasis:names:tc:SAML:2.0:protocol&amp;quot;&lt;br /&gt;
                xmlns:saml=&amp;quot;urn:oasis:names:tc:SAML:2.0:assertion&amp;quot;&lt;br /&gt;
                ID=&amp;quot;...&amp;quot;&lt;br /&gt;
                Version=&amp;quot;2.0&amp;quot;&lt;br /&gt;
                IssueInstant=&amp;quot;...&amp;quot;&lt;br /&gt;
                Destination=&amp;quot;https://filesender.amres.ac.rs/simplesamlphp/module.php/saml/sp/saml2-acs.php/default-sp&amp;quot;&lt;br /&gt;
                InResponseTo=&amp;quot;...&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
    &amp;lt;saml:Issuer&amp;gt;https://login.iamres.amres.ac.rs/simplesaml/saml2/idp/metadata.php&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
    &amp;lt;ds:Signature xmlns:ds=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:CanonicalizationMethod Algoritm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:Reference URI=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ds:Transforms&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ds:Transforms&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestValue&amp;gt;...&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignatureValue&amp;gt;...&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
        &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Kako bi pružalac usluge mogao da veruje odgovoru od pružaoca identiteta koji sadrži rezultat autentikacije, pružalac identiteta taj odgovor potpisuje i u njega prilaže svoj sertifikat kako bi pružalac usluge taj potpis mogao da verifikuje. Pružalac usluge će zato pročitati digitalni sertifikat pružaoca identiteta, verifikovati ga, izračunati heš nad pridruženim SAML podacima, dekriptovati potpis javnim ključem pružaoca identiteta (datog u sertifikatu) i uporediti sa hešom. Ukoliko se sve slaže, ta poruka zaista potiče od tog pružaoca identiteta i nije izmenjena od strane korisnika niti bilo koga drugog.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Objasniti razliku između računske i bezuslovne sigurnosti kriptografskih algoritama. Dati primer algoritma koji pruža bezuslovnu sigurnost. Šta je potrebno da bi se ovakav algoritam realizovao?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Računska sigurnost kriptografskog algoritma znači da se njegova šifra ne može razbiti za vreme dok je šifrovana poruka još uvek relevantna (ukoliko je, na primer, potrebno preko 100 godina da se dešifruje tekst šifrovan nekim kriptografskim algoritmom bez prethodnog posedovanja ključa, i poruka koja je njime šifrovana neće biti relevantna nakon 100 godina, smatra se da je taj kriptografski algoritam računski siguran). Bezuslovna sigurnost kriptografskog algoritma znači da se tekst šifrovan njime ne može dešifrovati, bez obzira na vreme dato za dešifrovanje, bez posedovanja ključa kojim je taj tekst šifrovan. Primer ovakog algoritma je &#039;&#039;One-time pad&#039;&#039;, koji to postiže tako što se ista poruka može dešifrovati na različite načine u zavisnosti od ključa, i napadač ne može biti siguran koja od tih dešifrovanih poruka je tačna.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
MAC algoritam koji daje MAC kod veličine 32 bita ima ključ veličine 120 bita. Ako je rasporedla MAC kodova koji daje algoritam uniformna i sve vrednosti su jednako verovatne, da bi otkrio ključ koji se koristi za generisanje MAC kodova napadaču će trebati:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; različita para/različitih parova (poruka, MAC(poruka))&lt;br /&gt;
# da izvrši &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^120+2^88+2^56+2^24&amp;lt;/span&amp;gt; MAC operacija (za prikaz operacije stepenovanja koristiti simbol ^)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Na slici je prikazan skup paketa koji su zabeleženi tokom jedne razmene ključeva IKE protokolom u kom se koristi unapred podeljeni ključ za proveru identiteta. Prva kolona predstavlja redni broj paketa, druga vreme kada je paket došao, treća i četvrta IP adrese krajeva IPsec sigurnosne asocijacije, a preostale dve opis poruke.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Skup paketa iz šestog zadatka.&lt;br /&gt;
| 16 || 41.000846 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 190 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 41.055118 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 410 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 41.182527 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 21 || 41.196514 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 118 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 41.202733 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 23 || 41.226871 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 24 || 41.232999 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 102 || Quick Mode&lt;br /&gt;
|}&lt;br /&gt;
U sledećim paketima se nalaze ključevi od kojih će se generisati sesijski ključ za enkripciju u okviru ESP:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# 24&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;22&amp;lt;/span&amp;gt;&lt;br /&gt;
# 20&lt;br /&gt;
# 17&lt;br /&gt;
# 18&lt;br /&gt;
# 21&lt;br /&gt;
# 16&lt;br /&gt;
# 19&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;23&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Poređati sledeće simetrične algoritme enkripcije po kvalitetu od najkvalitetnijeg ka najlošijem:&lt;br /&gt;
* A — Cezarov algoritam,&lt;br /&gt;
* B — slučajna polialfabetska šifra,&lt;br /&gt;
* C — Vigenere algoritam sa autokey poboljšanjem,&lt;br /&gt;
* D — Playfair algoritam.&lt;br /&gt;
Kvalitet algoritma je određen time koliko se u šifrovanom tekstu razlikuje statistička struktura šifrovanog teksta u odnosu na originalni. Što je razlika veća, algoritam je kvalitetniji. Odgovor upisati u polje u formi (X-Y-Z-W) gde slovo označava određeni algoritam (crtice između slova su &#039;&#039;&#039;obavezne&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;B-C-D-A&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=8097</id>
		<title>Заштита података/Август 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=8097"/>
		<updated>2025-10-02T14:08:55Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 2. zadatak */  sifrovanjem javnim kljucem se ne obezbedjuje zastita porekla vec poverljivost(tajnost)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2021. godine&#039;&#039;&#039; na održan je 26. avgusta i trajao je dva sata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Ana je šifrovala svoju poruku RSA algoritmom koristeći svoj privatni ključ (&amp;lt;math&amp;gt;n=437, e=317&amp;lt;/math&amp;gt;). Vrednost šifrovane poruke je &amp;lt;math&amp;gt;C=101&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
(Pomoć: pretragu inverznog elementa krenuti od najmanjih vrednosti nepoznate)&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti Anin privatni ključ &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti vrednost originalne poruke M: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;100&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na ovaj način šifrovane poruke &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; ima obezbeđeno:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Poreklo poruke M&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poverljivost poruke M&amp;lt;/span&amp;gt;&lt;br /&gt;
* I poreklo i poverljivost poruke M&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Na slici je dat deo SAML odgovora koji Identity provider šalje Service provideru kroz browser korisnika. U okviru odgovora se nalaze message digest, digitalni potpis i digitalni sertifikat Identity providera. Objasniti čemu služe elementi SAML odgovora i na koji način će ih Service provider koristiti za proveru odgovora.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samlp:Response xmlns:samlp=&amp;quot;urn:oasis:names:tc:SAML:2.0:protocol&amp;quot;&lt;br /&gt;
                xmlns:saml=&amp;quot;urn:oasis:names:tc:SAML:2.0:assertion&amp;quot;&lt;br /&gt;
                ID=&amp;quot;...&amp;quot;&lt;br /&gt;
                Version=&amp;quot;2.0&amp;quot;&lt;br /&gt;
                IssueInstant=&amp;quot;...&amp;quot;&lt;br /&gt;
                Destination=&amp;quot;https://filesender.amres.ac.rs/simplesamlphp/module.php/saml/sp/saml2-acs.php/default-sp&amp;quot;&lt;br /&gt;
                InResponseTo=&amp;quot;...&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
    &amp;lt;saml:Issuer&amp;gt;https://login.iamres.amres.ac.rs/simplesaml/saml2/idp/metadata.php&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
    &amp;lt;ds:Signature xmlns:ds=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:CanonicalizationMethod Algoritm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:Reference URI=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ds:Transforms&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ds:Transforms&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestValue&amp;gt;...&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignatureValue&amp;gt;...&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
        &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Kako bi pružalac usluge mogao da veruje odgovoru od pružaoca identiteta koji sadrži rezultat autentikacije, pružalac identiteta taj odgovor potpisuje i u njega prilaže svoj sertifikat kako bi pružalac usluge taj potpis mogao da verifikuje. Pružalac usluge će zato pročitati digitalni sertifikat pružaoca identiteta, verifikovati ga, izračunati heš nad pridruženim SAML podacima, dekriptovati potpis javnim ključem pružaoca identiteta (datog u sertifikatu) i uporediti sa hešom. Ukoliko se sve slaže, ta poruka zaista potiče od tog pružaoca identiteta i nije izmenjena od strane korisnika niti bilo koga drugog.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Objasniti razliku između računske i bezuslovne sigurnosti kriptografskih algoritama. Dati primer algoritma koji pruža bezuslovnu sigurnost. Šta je potrebno da bi se ovakav algoritam realizovao?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Računska sigurnost kriptografskog algoritma znači da se njegova šifra ne može razbiti za vreme dok je šifrovana poruka još uvek relevantna (ukoliko je, na primer, potrebno preko 100 godina da se dešifruje tekst šifrovan nekim kriptografskim algoritmom bez prethodnog posedovanja ključa, i poruka koja je njime šifrovana neće biti relevantna nakon 100 godina, smatra se da je taj kriptografski algoritam računski siguran). Bezuslovna sigurnost kriptografskog algoritma znači da se tekst šifrovan njime ne može dešifrovati, bez obzira na vreme dato za dešifrovanje, bez posedovanja ključa kojim je taj tekst šifrovan. Primer ovakog algoritma je &#039;&#039;One-time pad&#039;&#039;, koji to postiže tako što se ista poruka može dešifrovati na različite načine u zavisnosti od ključa, i napadač ne može biti siguran koja od tih dešifrovanih poruka je tačna.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
MAC algoritam koji daje MAC kod veličine 32 bita ima ključ veličine 120 bita. Ako je rasporedla MAC kodova koji daje algoritam uniformna i sve vrednosti su jednako verovatne, da bi otkrio ključ koji se koristi za generisanje MAC kodova napadaču će trebati:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; različita para/različitih parova (poruka, MAC(poruka))&lt;br /&gt;
# da izvrši &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^120+2^88+2^56+2^24&amp;lt;/span&amp;gt; MAC operacija (za prikaz operacije stepenovanja koristiti simbol ^)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Na slici je prikazan skup paketa koji su zabeleženi tokom jedne razmene ključeva IKE protokolom u kom se koristi unapred podeljeni ključ za proveru identiteta. Prva kolona predstavlja redni broj paketa, druga vreme kada je paket došao, treća i četvrta IP adrese krajeva IPsec sigurnosne asocijacije, a preostale dve opis poruke.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Skup paketa iz šestog zadatka.&lt;br /&gt;
| 16 || 41.000846 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 190 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 41.055118 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 410 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 41.182527 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 21 || 41.196514 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 118 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 41.202733 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 23 || 41.226871 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 24 || 41.232999 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 102 || Quick Mode&lt;br /&gt;
|}&lt;br /&gt;
U sledećim paketima se nalaze ključevi od kojih će se generisati sesijski ključ za enkripciju u okviru ESP:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# 24&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;22&amp;lt;/span&amp;gt;&lt;br /&gt;
# 20&lt;br /&gt;
# 17&lt;br /&gt;
# 18&lt;br /&gt;
# 21&lt;br /&gt;
# 16&lt;br /&gt;
# 19&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;23&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Poređati sledeće simetrične algoritme enkripcije po kvalitetu od najkvalitetnijeg ka najlošijem:&lt;br /&gt;
* A — Cezarov algoritam,&lt;br /&gt;
* B — slučajna polialfabetska šifra,&lt;br /&gt;
* C — Vigenere algoritam sa autokey poboljšanjem,&lt;br /&gt;
* D — Playfair algoritam.&lt;br /&gt;
Kvalitet algoritma je određen time koliko se u šifrovanom tekstu razlikuje statistička struktura šifrovanog teksta u odnosu na originalni. Što je razlika veća, algoritam je kvalitetniji. Odgovor upisati u polje u formi (X-Y-Z-W) gde slovo označava određeni algoritam (crtice između slova su &#039;&#039;&#039;obavezne&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;B-C-D-A&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8095</id>
		<title>Заштита података/К2 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8095"/>
		<updated>2025-09-30T17:14:56Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 2. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum 2023. godine&#039;&#039;&#039; održan je 5. maja i trajao je sat vremena. Na kolokvijumu su bili dostupni Windows 7 kalkulator, Notepad, Notepad++ i pretraživač.&lt;br /&gt;
&lt;br /&gt;
== 1. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; U šemi za distribuciju ključeva korišćenjem centra za dostavljanje ključeva (KDC) prikazanoj na slici:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 1 zadatak 1.svg|frame|center|Šema za distribuciju ključeva]]&lt;br /&gt;
Šta predstavlja ključ &amp;lt;math&amp;gt;K_s&amp;lt;/math&amp;gt;, čemu služi, ko ga sve poseduje i ako ga poseduje više učesnika na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Sesijski ključevi Ks služe za uspostavljanje sesije između dve partije (A i B), ovakvi ključevi traju koliko i logička konekcija između te dve partije. Obe partije dobijaju sesijski ključ Ks od KDC (Key Distribution Centre) autoriteta. Kada dobiju sesijski ključ komunikacija između A i B može da počne, naravno, nakon razmenjivanja N1 i N2 nonce vrednosti zarad autentičnosti dalje komunikacije (stranica 480. u knjizi, slika Figure 15.5)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Gmail servis danas ima 1.5 milijardi korisnika koji pristup mejlu obezbeđuje pomoću korisničkog imena i lozinke. Ako bi sistem čuvao lozinke tako što bi se čuvale kao &#039;&#039;hash&#039;&#039; (&#039;&#039;password&#039;&#039;+&#039;&#039;salt&#039;&#039;), i ako bi se koristila &#039;&#039;hash&#039;&#039; funkcija čiji je izlaz 64 bita, verovatnoća da će dve lozinke dati isti &#039;&#039;hash&#039;&#039; u ovom slučaju je (netačan odgovori nosi -25%, &amp;quot;Ne znam&amp;quot; nosi 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Tačno 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manja od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veća od 50%&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
Ovde se koristi definicija sa predavanja da jaka otpornost na kolizije znači da je teško naći dve poruke koje daju isti hash i da je šansa da se tako nešto dogodi veća od 50% tek kada se generiše barem &amp;lt;math&amp;gt;2^{n/2}&amp;lt;/math&amp;gt; parova poruka. Pošto je ovde n=64, &amp;lt;math&amp;gt;2^{n/2}&amp;lt;/math&amp;gt; je &amp;lt;math&amp;gt;2^{32}&amp;lt;/math&amp;gt; , što znači da je potrebno barem 4 294 967 296 korisnika kako bi šansa da dve lozinke daju isti hash bila veća od 50%. Dakle, šansa za tako nešto je u ovom primeru manja od 50%. Ovo pitanje, sa identičnim brojevima, se često pojavljuje na rokovima.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; &lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u ECB (&#039;&#039;Electronic CodeBook&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na ECB mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Moguće je izvršiti enkripciju i dekripciju u paraleli jer se nezavisno šifruju blokovi (u odnosu na CBC gde se chain-uju blokovi i greška propagira dalje). Greška u jednom biti priliku transporta utiče samo na taj blok Pi zato što ECB šifruje svaki blok plaintext-a nezavisno, greška će se pojaviti samo u tom bloku Ci.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; TBA&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruka za koju se obezbeđuje isključivo autentikacija?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa pošiljaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# Identifikator javnog ključa primaoca&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# Identifikator algoritma za asimetrične ključeve&lt;br /&gt;
# Identifikator algoritma za simetrične ključeve&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za hash&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Data je sledeća šema za decentralizovanu razmenu ključeva:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 2 zadatak 1.svg|frame|center|Šema iz prvog zadatka.]]&lt;br /&gt;
Šta na ovoj šemi predstavlja ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;, čemu služi, ko ga sve poseduje i, ukoliko ga poseduje više učesnika, na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; predstavlja &#039;&#039;master&#039;&#039; ključ, koji služi kako bi A i B razmenjivali &#039;&#039;slave&#039;&#039; ključeve sa kojima će šifrovati svoju komunikaciju. Moraju da ga poseduju i A i B kako bi razmenjivali &#039;&#039;slave&#039;&#039; ključeve, a može biti razmenjen komunikacijom preko nekog sigurnog kanala (na primer, A i B se nađu uživo na tajnom mestu i razmene ovaj ključ).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#5. zadatak|peti zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=110, S_2=791&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=1760, S_2=640&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3769&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q = 5003&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 4999&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1682. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4890&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2419&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Samo prvi digitalni potpis je ispravan, samo tada poruka &#039;&#039;M&#039;&#039; nije menjana tokom prenosa i potpisala ju je Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u CBC (&#039;&#039;Cipher Block Chain&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na CBC mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;U CBC modu funkcionisanja jedan blok šifrovanog teksta zavisi od prethodnog bloka, tako da nije moguće šifrovati više blokova odjednom. Dešifrovanje je moguće sprovesti nad više blokova odjednom ukoliko su svi blokovi šifrovanog teksta dostupni u trenutku dešifrovanja. Zbog ove zavisnosti u podacima, greška u jednom bitu tokom transporta bloka šifrovanog teksta će uticati na blok koji se dešifruje, kao i na naredni blok (jer se sa neispravnim blokom radi operacija XOR).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Sanja je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od heksadecimalnih cifara, koristi CCM mod funkcionisanja i algoritam enkripcije radi na nivou bajtova i funkcioniše na sledeći način:&lt;br /&gt;
 ulaz: b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-2&amp;lt;/sub&amp;gt; ... b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;; izlaz: b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ...&lt;br /&gt;
(ukratko, prvo se uzima prvi bajt sa desne strane, pa sa leve strane, pa drugi bajt sa desne strane, pa sa leve strane i tako do kraja).&lt;br /&gt;
&lt;br /&gt;
Nonce vrednost je &#039;&#039;&#039;ABCDEFABCDEFABCDEFABCDEF&#039;&#039;&#039;. Drugarica je primila šifrovanu poruku &#039;&#039;&#039;C1C2ACA4FE2601&#039;&#039;&#039; (MAC nije uključen u ovu poruku).&lt;br /&gt;
&lt;br /&gt;
# Koja je vrednost prvog ulaznog bloka tokom dešifrovanja poruke? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;02ABCDEFABCDEFABCDEFABCDEF000001&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je vrednost nakon šifrovanja prvog ulaznog bloka? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;010200AB00CDEFEFCDABABCDEFEFCDAB&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je dešifrovana vrednost? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;C0C0AC0FFEEBEE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruke za koju se obezbeđuje isključivo tajnost?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# Identifikator javnog ključa pošiljaoca&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za asimetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot;&amp;gt;Ovaj odgovor je na kolokvijumu bio označen kao tačan, ali kako nije pisao na prezentaciji nakon kolokvijuma je označen kao nevažeći na način koji ne oštećuje nijednog studenta.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za simetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot; /&amp;gt;&lt;br /&gt;
# Identifikator algoritma za hash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2024&amp;diff=8094</id>
		<title>Програмски преводиоци 1/Јануар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2024&amp;diff=8094"/>
		<updated>2025-09-29T21:09:26Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Januarski ispit 2024. godine&#039;&#039;&#039; održan je 18. januara i trajao je 150 minuta. Postavka roka nije dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je sledeći kod na programskom jeziku C.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int f1(int a) {&lt;br /&gt;
    int b = a;&lt;br /&gt;
    b = b + 1;&lt;br /&gt;
    return b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int f2(int a) {&lt;br /&gt;
    int b = a;&lt;br /&gt;
    b = b + f1(1);&lt;br /&gt;
    return b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int m(int a, int n, int (*m1)(int), int(*m2)(int)) {&lt;br /&gt;
    int tmp1, int tmp2;&lt;br /&gt;
    tmp1 = f1(a);&lt;br /&gt;
    tmp2 = f2(a);&lt;br /&gt;
    &lt;br /&gt;
    if (n == 0) {&lt;br /&gt;
        return 1;&lt;br /&gt;
    } else {&lt;br /&gt;
        return tmp2 * m(tmp1, n - 1, m1, m2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    printf(&amp;quot;%d&amp;quot;, m(1, 3, &amp;amp;f1, &amp;amp;f2));&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dati ispis programa;&lt;br /&gt;
* Dati izgled steka nakon poslednjeg poziva funkcije &amp;lt;code&amp;gt;f2&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Dati x86 kod za funkciju &amp;lt;code&amp;gt;f2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sledeća gramatika:&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; &amp;amp;lt;S&amp;gt;a&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; &amp;amp;lt;S&amp;gt;&amp;amp;lt;A&amp;gt;b&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; eps&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; -&amp;gt; a&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; -&amp;gt; b&lt;br /&gt;
&lt;br /&gt;
# Konstruisati automat i kontrolnu tabelu SLR(1) automata&lt;br /&gt;
# Ispraviti gramatiku tako da se ukloni konflikt ali semantika ostane ista.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Date su sledeće gramatike:&lt;br /&gt;
&lt;br /&gt;
Gramatika A:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; o &amp;amp;lt;P&amp;gt; &amp;amp;lt;P&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika B:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; o &amp;amp;lt;P&amp;gt; &lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika C:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; &amp;amp;lt;P&amp;gt; o&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika D:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v &amp;amp;lt;Q&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Q&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; o &amp;amp;lt;Q&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Q&amp;gt; -&amp;gt; eps&lt;br /&gt;
&lt;br /&gt;
Gramatika E&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v &amp;amp;lt;P&amp;gt; o&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
* Koje su dve gramatike iste?&lt;br /&gt;
* Dokazati na primeru neke sekvence da se ostale 3 gramatike razlikuju.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
a) Gramatika A jedina može počinjati sa O, pa ona sigurno nije ista kao neka druga. Gramatika B može prihvatiti sekvencu VOV, dok gramatika C ne može, pa ni one nisu iste. Gramatika C mora početi sa VV, što važi i za gramatiku E, pa su te dve gramatike iste.&lt;br /&gt;
&lt;br /&gt;
b) Ukoliko uzmemo sekvencu OVV, takva sekvenca je validna za gramatiku A, ali nije za gramatike B i D. U gramatici B vidimo da ukoliko je ulazna sekvenca duža od 1, posle V mora da sledi O, dok u gramatici D to nije slučaj. Na primer, za sekvencu VVO se vidi da se B i D razlikuju jer gramatika D prihvata takvu sekvencu dok je gramatika B odbija.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati funkciju &amp;lt;code&amp;gt;static Obj find(String name, boolean isGlobal)&amp;lt;/code&amp;gt; za mikrojavu, koja se ponaša kao operator &amp;lt;code&amp;gt;::&amp;lt;/code&amp;gt; ako je &amp;lt;code&amp;gt;isGlobal=true&amp;lt;/code&amp;gt;. Traženu funkciju pisati od nule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Tab {&lt;br /&gt;
    public static final Struct&lt;br /&gt;
        noType = new Struct(Struct.None),&lt;br /&gt;
        intType = new Struct(Struct.Int),&lt;br /&gt;
        charType = new Struct(Struct.Char),&lt;br /&gt;
        nullType = new Struct(Struct.Class);&lt;br /&gt;
    public static final Obj noObj = new Obj(Obj.Var, &amp;quot;noObj&amp;quot;, noType);&lt;br /&gt;
    public static Obj chrObj, ordObj, lenObj;&lt;br /&gt;
    public static Scope currentScope; &lt;br /&gt;
    private static int currentLevel; //universe == -1&lt;br /&gt;
&lt;br /&gt;
    public static Obj find(String name, boolean isGlobal);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static Obj find(String name, boolean isGlobal) {&lt;br /&gt;
    Obj result = null;&lt;br /&gt;
&lt;br /&gt;
    if (isGlobal == true) {&lt;br /&gt;
        Scope s = currentScope;&lt;br /&gt;
&lt;br /&gt;
        while (s.getOuter() != null) {&lt;br /&gt;
            s = s.getOuter();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (s.getLocals() != null) {&lt;br /&gt;
            result = s.getLocals().searchKey(name);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
        for (Scope s = currentScope; s != null; s = s.getOuter()) {&lt;br /&gt;
            if (s.getLocals() != null) {&lt;br /&gt;
                result = s.getLocals().searchKey(name);&lt;br /&gt;
                if (result != null) break;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (result != null) ? result : noObj;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Operator :: preskače sve opsege i traži ime direktno u universe opsegu. Pošto u fragmentu koda koji je dat nije navedeno da postoji pokazivač na universe opseg, onda se u if grani ide na gore sve dok se ne dođe do njega i zatim se u njemu pretražuje. Else grana je standardna implementacija koja je data u projektu.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati regularni izraz &amp;lt;code&amp;gt;(a | (bc)*)+  d  (c | ε)+&amp;lt;/code&amp;gt; konstruisati DKA.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za sledeći kod napisati Mikrojava bajtkod.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
int b;&lt;br /&gt;
const int one = 1;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
    int[] niz;&lt;br /&gt;
    int calc(int a) {&lt;br /&gt;
        ...nebitno&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B extends A {&lt;br /&gt;
    int calc(int a) {&lt;br /&gt;
        ...isto nebitno&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int f(int c) &lt;br /&gt;
{&lt;br /&gt;
    if (c &amp;gt; 10) return c;&lt;br /&gt;
    else return c + 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main() &lt;br /&gt;
    int x, y; A c;&lt;br /&gt;
{&lt;br /&gt;
    read(b);&lt;br /&gt;
    b = f(b);&lt;br /&gt;
    c = new B;&lt;br /&gt;
    x = 0;&lt;br /&gt;
&lt;br /&gt;
    do {&lt;br /&gt;
        if (x % 2 == 0) y = c.calc(b);&lt;br /&gt;
        else y = y + (b + one);&lt;br /&gt;
        &lt;br /&gt;
        x++;&lt;br /&gt;
    } while (x &amp;lt; 5);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2024&amp;diff=8050</id>
		<title>Програмски преводиоци 1/Јануар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2024&amp;diff=8050"/>
		<updated>2025-09-22T19:10:10Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Januarski ispit 2024. godine&#039;&#039;&#039; održan je 18. januara i trajao je 150 minuta. Postavka roka nije dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je sledeći kod na programskom jeziku C.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int f1(int a) {&lt;br /&gt;
    int b = a;&lt;br /&gt;
    b = b + 1;&lt;br /&gt;
    return b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int f2(int a) {&lt;br /&gt;
    int b = a;&lt;br /&gt;
    b = b + f1(1);&lt;br /&gt;
    return b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int m(int a, int n, int (*m1)(int), int(*m2)(int)) {&lt;br /&gt;
    int tmp1, int tmp2;&lt;br /&gt;
    tmp1 = f1(a);&lt;br /&gt;
    tmp2 = f2(a);&lt;br /&gt;
    &lt;br /&gt;
    if (n == 0) {&lt;br /&gt;
        return 1;&lt;br /&gt;
    } else {&lt;br /&gt;
        return tmp2 * m(tmp1, n - 1, m1, m2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    printf(&amp;quot;%d&amp;quot;, m(1, 3, &amp;amp;f1, &amp;amp;f2));&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dati ispis programa;&lt;br /&gt;
* Dati izgled steka nakon poslednjeg poziva funkcije &amp;lt;code&amp;gt;f2&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Dati x86 kod za funkciju &amp;lt;code&amp;gt;f2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sledeća gramatika:&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; &amp;amp;lt;S&amp;gt;a&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; &amp;amp;lt;S&amp;gt;&amp;amp;lt;A&amp;gt;b&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; -&amp;gt; eps&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; -&amp;gt; a&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; -&amp;gt; b&lt;br /&gt;
&lt;br /&gt;
# Konstruisati automat i kontrolnu tabelu SLR(1) automata&lt;br /&gt;
# Ispraviti gramatiku tako da se ukloni konflikt ali semantika ostane ista.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Date su sledeće gramatike:&lt;br /&gt;
&lt;br /&gt;
Gramatika A:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; o &amp;amp;lt;P&amp;gt; &amp;amp;lt;P&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika B:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; o &amp;amp;lt;P&amp;gt; &lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika C:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; &amp;amp;lt;P&amp;gt; o&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
Gramatika D:&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v &amp;amp;lt;Q&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Q&amp;gt; -&amp;gt; &amp;amp;lt;P&amp;gt; o &amp;amp;lt;Q&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Q&amp;gt; -&amp;gt; eps&lt;br /&gt;
&lt;br /&gt;
Gramatika E&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v &amp;amp;lt;P&amp;gt; o&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; -&amp;gt; v&lt;br /&gt;
&lt;br /&gt;
* Koje su dve gramatike iste?&lt;br /&gt;
* Dokazati na primeru neke sekvence da se ostale 3 gramatike razlikuju.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati funkciju &amp;lt;code&amp;gt;static Obj find(String name, boolean isGlobal)&amp;lt;/code&amp;gt; za mikrojavu, koja se ponaša kao operator &amp;lt;code&amp;gt;::&amp;lt;/code&amp;gt; ako je &amp;lt;code&amp;gt;isGlobal=true&amp;lt;/code&amp;gt;. Traženu funkciju pisati od nule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Tab {&lt;br /&gt;
    public static final Struct&lt;br /&gt;
        noType = new Struct(Struct.None),&lt;br /&gt;
        intType = new Struct(Struct.Int),&lt;br /&gt;
        charType = new Struct(Struct.Char),&lt;br /&gt;
        nullType = new Struct(Struct.Class);&lt;br /&gt;
    public static final Obj noObj = new Obj(Obj.Var, &amp;quot;noObj&amp;quot;, noType);&lt;br /&gt;
    public static Obj chrObj, ordObj, lenObj;&lt;br /&gt;
    public static Scope currentScope; &lt;br /&gt;
    private static int currentLevel; //universe == -1&lt;br /&gt;
&lt;br /&gt;
    public static Obj find(String name, boolean isGlobal);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static Obj find(String name, boolean isGlobal) {&lt;br /&gt;
    Obj result = null;&lt;br /&gt;
&lt;br /&gt;
    if (isGlobal == true) {&lt;br /&gt;
        Scope s = currentScope;&lt;br /&gt;
&lt;br /&gt;
        while (s.getOuter() != null) {&lt;br /&gt;
            s = s.getOuter();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (s.getLocals() != null) {&lt;br /&gt;
            result = s.getLocals().searchKey(name);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
        for (Scope s = currentScope; s != null; s = s.getOuter()) {&lt;br /&gt;
            if (s.getLocals() != null) {&lt;br /&gt;
                result = s.getLocals().searchKey(name);&lt;br /&gt;
                if (result != null) break;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return (result != null) ? result : noObj;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
Operator :: preskače sve opsege i traži ime direktno u universe opsegu. Pošto u fragmentu koda koji je dat nije navedeno da postoji pokazivač na universe opseg, onda se u if grani ide na gore sve dok se ne dođe do njega i zatim se u njemu pretražuje. Else grana je standardna implementacija koja je data u projektu.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati regularni izraz &amp;lt;code&amp;gt;(a | (bc)*)+  d  (c | ε)+&amp;lt;/code&amp;gt; konstruisati DKA.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za sledeći kod napisati Mikrojava bajtkod.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
int b;&lt;br /&gt;
const int one = 1;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
    int[] niz;&lt;br /&gt;
    int calc(int a) {&lt;br /&gt;
        ...nebitno&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class B extends A {&lt;br /&gt;
    int calc(int a) {&lt;br /&gt;
        ...isto nebitno&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int f(int c) &lt;br /&gt;
{&lt;br /&gt;
    if (c &amp;gt; 10) return c;&lt;br /&gt;
    else return c + 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main() &lt;br /&gt;
    int x, y; A c;&lt;br /&gt;
{&lt;br /&gt;
    read(b);&lt;br /&gt;
    b = f(b);&lt;br /&gt;
    c = new B;&lt;br /&gt;
    x = 0;&lt;br /&gt;
&lt;br /&gt;
    do {&lt;br /&gt;
        if (x % 2 == 0) y = c.calc(b);&lt;br /&gt;
        else y = y + (b + one);&lt;br /&gt;
        &lt;br /&gt;
        x++;&lt;br /&gt;
    } while (x &amp;lt; 5);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2023&amp;diff=8049</id>
		<title>Програмски преводиоци 1/Септембар 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2023&amp;diff=8049"/>
		<updated>2025-09-22T14:58:08Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 1. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u septembarskom roku 2023. godine&#039;&#039;&#039; održan je 16. Septembra.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Dat je deo implementacije klase &#039;&#039;Node&#039;&#039; u programskom jeziku &#039;&#039;Java&#039;&#039;, koja predstavlja čvor u sintaksnom stablu izgenerisanom za konstrukciju DKA korišćenjem metoda pozicije, gde su objašnjenja polja i metoda data u komentarima iznad njih (sva polja su inicijalizovana konstruktorom):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    public class Node {&lt;br /&gt;
        private enum Type {&lt;br /&gt;
            ASTERISK,   // *&lt;br /&gt;
            PLUS,       // +&lt;br /&gt;
            PERIOD,     // .&lt;br /&gt;
            OR,         // |&lt;br /&gt;
            SYMBOL,     // s&lt;br /&gt;
            EPSILON     // ε&lt;br /&gt;
        }&lt;br /&gt;
        // left subtree of position node, null if leaf (symbol) node&lt;br /&gt;
        private Node left;&lt;br /&gt;
&lt;br /&gt;
        // right subtree of position node, null if unary operation or leaf (symbol) node&lt;br /&gt;
        private Node right;&lt;br /&gt;
&lt;br /&gt;
        // type of position node&lt;br /&gt;
        private Type type;&lt;br /&gt;
&lt;br /&gt;
        // position of symbol in regex, only valid for leaf (symbol) nodes, otherwise set to -1&lt;br /&gt;
        private int symbolPos;&lt;br /&gt;
&lt;br /&gt;
        // check whether the subsequence with the given node as root of the subtree can be empty&lt;br /&gt;
        public boolean isNullable();&lt;br /&gt;
&lt;br /&gt;
        // find sert of leaf (symbol) node positions which could be at the beginning of&lt;br /&gt;
        // subsequence with the given node as root of the subtree&lt;br /&gt;
        public Set&amp;lt;Integer&amp;gt; firstPos();&lt;br /&gt;
&lt;br /&gt;
        // find set of leaf (symbol) node positions which could be at the end of&lt;br /&gt;
        // subsequence with the given node as root of the subtree&lt;br /&gt;
        public Set&amp;lt;Integer&amp;gt; lastPos();&lt;br /&gt;
&lt;br /&gt;
        // returns a union of the two parameters&lt;br /&gt;
        public static Set&amp;lt;Integer&amp;gt; union(Set&amp;lt;Integer&amp;gt; first, Set&amp;lt;Integer&amp;gt; second);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Potrebno je napisati implementaciju metoda &amp;lt;code&amp;gt;firstPos()&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;lastPos()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1a. zadatak ===&lt;br /&gt;
Identičan ovakav zadatak (za isti broj poena) se pojavio u Avgustu 2023, samo se tražila implementacija &amp;lt;code&amp;gt;isNullable()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public Set&amp;lt;Integer&amp;gt; firstPos() {&lt;br /&gt;
    Set&amp;lt;Integer&amp;gt; ret = new HashSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    switch (this.type) {&lt;br /&gt;
        case &#039;SYMBOL&#039;:&lt;br /&gt;
            ret.add(this.symbolPos);&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        case &#039;ASTERISK&#039;:&lt;br /&gt;
            return this.left.firstPos();&lt;br /&gt;
&lt;br /&gt;
        case &#039;OR&#039;:&lt;br /&gt;
            for (Integer pos : this.left.firstPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            for (Integer pos : this.right.firstPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        case &#039;PERIOD&#039;:&lt;br /&gt;
            for (Integer pos : this.left.firstPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            if (this.left.isNullable()) {&lt;br /&gt;
                for (Integer pos : this.right.firstPos()) {&lt;br /&gt;
                    ret.add(pos);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public Set&amp;lt;Integer&amp;gt; lastPos() {&lt;br /&gt;
    Set&amp;lt;Integer&amp;gt; ret = new HashSet&amp;lt;Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    switch (this.type) {&lt;br /&gt;
        case &#039;SYMBOL&#039;:&lt;br /&gt;
            ret.add(this.symbolPos);&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        case &#039;ASTERISK&#039;:&lt;br /&gt;
            return this.left.lastPos();&lt;br /&gt;
&lt;br /&gt;
        case &#039;OR&#039;:&lt;br /&gt;
            for (Integer pos : this.left.lastPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            for (Integer pos : this.right.lastPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        case &#039;PERIOD&#039;:&lt;br /&gt;
            for (Integer pos : this.right.lastPos()) {&lt;br /&gt;
                ret.add(pos);&lt;br /&gt;
            }&lt;br /&gt;
            if (this.right.isNullable()) {&lt;br /&gt;
                for (Integer pos : this.left.lastPos()) {&lt;br /&gt;
                    ret.add(pos);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
&lt;br /&gt;
        default:&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public boolean isNullable(){&lt;br /&gt;
	switch(this.type){&lt;br /&gt;
		case &#039;SYMBOL&#039;:&lt;br /&gt;
			return false;&lt;br /&gt;
			&lt;br /&gt;
		case &#039;EPSILON&#039;:&lt;br /&gt;
		case &#039;ASTERISK&#039;:&lt;br /&gt;
			return true;&lt;br /&gt;
			&lt;br /&gt;
		case &#039;PERIOD&#039;:&lt;br /&gt;
			return this.left.isNullable() &amp;amp;&amp;amp; this.right.isNullable();&lt;br /&gt;
			&lt;br /&gt;
		case &#039;OR&#039;:&lt;br /&gt;
			return this.left.isNullable() || this.right.isNullable();&lt;br /&gt;
			&lt;br /&gt;
		default: return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Za rekurzivni spust koji opisuje navedenu gramatiku, koji su opisani ispod:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Dopuniti delove rekurzivnog spusta obeleženih sa labelama PN (N označava labelu koja se može popuniti i može predstavljati jednu ili više linija koda), ukoliko je poznato da se sekvence &#039;&#039;aadddbb&#039;&#039;, &#039;&#039;dd&#039;&#039; i &#039;&#039;ab&#039;&#039; prihvataju.&lt;br /&gt;
# Napisati LL(1) gramatiku opisanu rekurzivnim spustom.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Glavni program:&lt;br /&gt;
IN = NEXTCHAR();&lt;br /&gt;
call PROCS;&lt;br /&gt;
if (INP&amp;lt;&amp;gt; &#039;˧&#039;)&lt;br /&gt;
    then REJECT;&lt;br /&gt;
    else ACCEPT;&lt;br /&gt;
end if;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure PROCS:&lt;br /&gt;
    case IN of&lt;br /&gt;
        &#039;a&#039;: goto P1;&lt;br /&gt;
        &#039;d&#039;, &#039;b&#039;, &#039;˧&#039;: goto P2;&lt;br /&gt;
        default: REJECT;&lt;br /&gt;
    end case;&lt;br /&gt;
P1: /* ... */&lt;br /&gt;
P2: /* ... */&lt;br /&gt;
end procedure;&lt;br /&gt;
&lt;br /&gt;
procedure PROCA:&lt;br /&gt;
    case IN of&lt;br /&gt;
        &#039;b&#039;, &#039;˧&#039;: goto P3;&lt;br /&gt;
        &#039;d&#039;: goto P4;&lt;br /&gt;
        default: REJECT;&lt;br /&gt;
    end case;&lt;br /&gt;
P3: /* ... */&lt;br /&gt;
P4: /* ... */&lt;br /&gt;
end procedure;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Za dati Mikrojava bajtkod:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Navesti izlaz programa.&lt;br /&gt;
# Rekonstruisati izvorni Mikrojava kod na osnovu datog bajtkoda.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0:      enter 2 2&lt;br /&gt;
3:      load_0&lt;br /&gt;
4:      load_1&lt;br /&gt;
5:      mul&lt;br /&gt;
6:      jmp 3 (=9)&lt;br /&gt;
9:      exit&lt;br /&gt;
10:     return&lt;br /&gt;
11:     enter 2 3&lt;br /&gt;
14:     const_0&lt;br /&gt;
15:     store_2&lt;br /&gt;
16:     load_2&lt;br /&gt;
17:     load_1&lt;br /&gt;
18:     jge 21 (=39)&lt;br /&gt;
21:     load_0&lt;br /&gt;
22:     load_2&lt;br /&gt;
23:     aload&lt;br /&gt;
24:     const_0&lt;br /&gt;
25:     print&lt;br /&gt;
26:     const 32&lt;br /&gt;
31:     const_0&lt;br /&gt;
32:     bprint&lt;br /&gt;
33:     inc 2,1&lt;br /&gt;
36:     jmp -20 (=16)&lt;br /&gt;
39:     const 10&lt;br /&gt;
44:     const_0&lt;br /&gt;
45:     bprint&lt;br /&gt;
46:     exit&lt;br /&gt;
47:     return&lt;br /&gt;
48:     enter 0 5&lt;br /&gt;
51:     const_0&lt;br /&gt;
52:     store_0&lt;br /&gt;
53:     const 10&lt;br /&gt;
58:     newarray 1&lt;br /&gt;
60:     store_1&lt;br /&gt;
61:     const 10&lt;br /&gt;
66:     newarray 1&lt;br /&gt;
68:     store_2&lt;br /&gt;
69:     load_0&lt;br /&gt;
70:     const 10&lt;br /&gt;
75:     jge 74 (=149)&lt;br /&gt;
78:     load_1&lt;br /&gt;
79:     load_0&lt;br /&gt;
80:     load_0&lt;br /&gt;
81:     const 10&lt;br /&gt;
86:     mul&lt;br /&gt;
87:     load_0&lt;br /&gt;
88:     const_3&lt;br /&gt;
89:     rem&lt;br /&gt;
90:     add&lt;br /&gt;
91:     astore&lt;br /&gt;
92:     load_0&lt;br /&gt;
93:     const_2&lt;br /&gt;
94:     rem&lt;br /&gt;
95:     const_1&lt;br /&gt;
96:     jne 12 (=108)&lt;br /&gt;
99:     load_1&lt;br /&gt;
100:    load_0&lt;br /&gt;
101:    const_1&lt;br /&gt;
102:    neg&lt;br /&gt;
103:    load_1&lt;br /&gt;
104:    load_0&lt;br /&gt;
105:    aload&lt;br /&gt;
106:    mul&lt;br /&gt;
107:    astore&lt;br /&gt;
108:    load_1&lt;br /&gt;
109:    load_0&lt;br /&gt;
110:    aload&lt;br /&gt;
111:    const_2&lt;br /&gt;
112:    call -112 (=0)&lt;br /&gt;
115:    store_3&lt;br /&gt;
116:    load_1&lt;br /&gt;
117:    load_0&lt;br /&gt;
118:    aload&lt;br /&gt;
119:    const_3&lt;br /&gt;
120:    call -120 (=0)&lt;br /&gt;
123:    store 4&lt;br /&gt;
125:    load_3&lt;br /&gt;
126:    load 4&lt;br /&gt;
128:    jle 10 (=138)&lt;br /&gt;
131:    load_2&lt;br /&gt;
132:    load_0&lt;br /&gt;
133:    load_3&lt;br /&gt;
134:    astore&lt;br /&gt;
135:    jmp 8 (=143)&lt;br /&gt;
138:    load_2&lt;br /&gt;
139:    load_0&lt;br /&gt;
140:    load 4&lt;br /&gt;
142:    astore&lt;br /&gt;
143:    inc 0,1&lt;br /&gt;
146:    jmp -77 (=69)&lt;br /&gt;
149:    load_1&lt;br /&gt;
150:    const 10&lt;br /&gt;
155:    call -144 (=11)&lt;br /&gt;
158:    load_2&lt;br /&gt;
159:    const 10&lt;br /&gt;
164:    call -153 (=11)&lt;br /&gt;
167:    exit&lt;br /&gt;
168:    return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Za datu gramatiku konstruisati:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# LR(0) karakteristični automat&lt;br /&gt;
# LALR(1) karakteristični automat&lt;br /&gt;
# Za oba slučaja LR(0) i LALR(1) navesti stanja sa po jednim konfliktom i objasniti o kom se konfliktu radi, u slučaju da konflikt postoji. Nije potrebno konstruisati tabele parsera.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Oba automata prikazati u vidu grafa prelaza, unutar stanja napisati konfiguracije.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;S&amp;gt; → ( &amp;lt;X&amp;gt; )&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;S&amp;gt; → [ &amp;lt;X&amp;gt; ]&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;S&amp;gt; → ( &amp;lt;Y&amp;gt; ]&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;S&amp;gt; → [ &amp;lt;Y&amp;gt; )&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;X&amp;gt; → a&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;&amp;amp;lt;Y&amp;gt; → a&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Nacrtati graf memorijske predstave objekata c, d1 i d2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A { int x; }&lt;br /&gt;
class B { int y; }&lt;br /&gt;
class C extends A, B { int z; }&lt;br /&gt;
class D extends B, C { int v; }&lt;br /&gt;
C c; D d1, d2;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Ako je dozvoljen neiskorišćen prostor na nivou objekata.&lt;br /&gt;
# Ako neiskorišćen prostor može da postoji samo na nivou klase, a ne i objekata&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&#039;&#039;&#039;(10p)&#039;&#039;&#039; Dat je sledeći program na jeziku sličnom Pascalu. Statičko okruženje za nelokalne promenljive je realizovano pomoću pristupnih veza. Glavni program poseduje sopstveni akcioni zapis na steku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Prikazati jasno i precizno izgled steka poziva neposredno pre povratka iz procedure c. &amp;lt;u&amp;gt;Voditi računa o formatu aktivacionih zapisa&amp;lt;/u&amp;gt;&lt;br /&gt;
# Napisati kompletan 80x86 asemblerski kod koji bi kompajler izgenerisao za procedure c i d (enter i leave instrukcije ne postoje)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
program Sep23 (output);&lt;br /&gt;
    var g, t: integer&lt;br /&gt;
&lt;br /&gt;
    procedure b(p: integer)&lt;br /&gt;
        var m: integer;&lt;br /&gt;
&lt;br /&gt;
        procedure c ()&lt;br /&gt;
        begin&lt;br /&gt;
            g := m+t;&lt;br /&gt;
        end; {c}&lt;br /&gt;
        procedure d (p: integer)&lt;br /&gt;
            t := p+2;&lt;br /&gt;
            c();&lt;br /&gt;
        end {d}&lt;br /&gt;
    begin&lt;br /&gt;
        m := p+1;&lt;br /&gt;
        d(m);&lt;br /&gt;
    end; {b}&lt;br /&gt;
&lt;br /&gt;
begin&lt;br /&gt;
    g := 1&lt;br /&gt;
    b(g);&lt;br /&gt;
end. {Sep23}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8015</id>
		<title>Заштита података/К2 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8015"/>
		<updated>2025-09-19T12:15:44Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 6. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum 2023. godine&#039;&#039;&#039; održan je 5. maja i trajao je sat vremena. Na kolokvijumu su bili dostupni Windows 7 kalkulator, Notepad, Notepad++ i pretraživač.&lt;br /&gt;
&lt;br /&gt;
== 1. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; U šemi za distribuciju ključeva korišćenjem centra za dostavljanje ključeva (KDC) prikazanoj na slici:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 1 zadatak 1.svg|frame|center|Šema za distribuciju ključeva]]&lt;br /&gt;
Šta predstavlja ključ &amp;lt;math&amp;gt;K_s&amp;lt;/math&amp;gt;, čemu služi, ko ga sve poseduje i ako ga poseduje više učesnika na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Sesijski ključevi Ks služe za uspostavljanje sesije između dve partije (A i B), ovakvi ključevi traju koliko i logička konekcija između te dve partije. Obe partije dobijaju sesijski ključ Ks od KDC (Key Distribution Centre) autoriteta. Kada dobiju sesijski ključ komunikacija između A i B može da počne, naravno, nakon razmenjivanja N1 i N2 nonce vrednosti zarad autentičnosti dalje komunikacije (stranica 480. u knjizi, slika Figure 15.5)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Gmail servis danas ima 1.5 milijardi korisnika koji pristup mejlu obezbeđuje pomoću korisničkog imena i lozinke. Ako bi sistem čuvao lozinke tako što bi se čuvale kao &#039;&#039;hash&#039;&#039; (&#039;&#039;password&#039;&#039;+&#039;&#039;salt&#039;&#039;), i ako bi se koristila &#039;&#039;hash&#039;&#039; funkcija čiji je izlaz 64 bita, verovatnoća da će dve lozinke dati isti &#039;&#039;hash&#039;&#039; u ovom slučaju je (netačan odgovori nosi -25%, &amp;quot;Ne znam&amp;quot; nosi 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Tačno 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manja od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veća od 50%&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
da bi bilo više od 50% šanse za slabu koliziju potrebno je 2^32 &amp;gt; 1.5B lozinki, pa je verovatnoća manja od 50%&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; &lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u ECB (&#039;&#039;Electronic CodeBook&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na ECB mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Moguće je izvršiti enkripciju i dekripciju u paraleli jer se nezavisno šifruju blokovi (u odnosu na CBC gde se chain-uju blokovi i greška propagira dalje). Greška u jednom biti priliku transporta utiče samo na taj blok Pi zato što ECB šifruje svaki blok plaintext-a nezavisno, greška će se pojaviti samo u tom bloku Ci.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; TBA&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruka za koju se obezbeđuje isključivo autentikacija?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa pošiljaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# Identifikator javnog ključa primaoca&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# Identifikator algoritma za asimetrične ključeve&lt;br /&gt;
# Identifikator algoritma za simetrične ključeve&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za hash&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Data je sledeća šema za decentralizovanu razmenu ključeva:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 2 zadatak 1.svg|frame|center|Šema iz prvog zadatka.]]&lt;br /&gt;
Šta na ovoj šemi predstavlja ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;, čemu služi, ko ga sve poseduje i, ukoliko ga poseduje više učesnika, na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; predstavlja &#039;&#039;master&#039;&#039; ključ, koji služi kako bi A i B razmenjivali &#039;&#039;slave&#039;&#039; ključeve sa kojima će šifrovati svoju komunikaciju. Moraju da ga poseduju i A i B kako bi razmenjivali &#039;&#039;slave&#039;&#039; ključeve, a može biti razmenjen komunikacijom preko nekog sigurnog kanala (na primer, A i B se nađu uživo na tajnom mestu i razmene ovaj ključ).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#5. zadatak|peti zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=110, S_2=791&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=1760, S_2=640&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3769&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q = 5003&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 4999&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1682. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4890&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2419&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Samo prvi digitalni potpis je ispravan, samo tada poruka &#039;&#039;M&#039;&#039; nije menjana tokom prenosa i potpisala ju je Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u CBC (&#039;&#039;Cipher Block Chain&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na CBC mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;U CBC modu funkcionisanja jedan blok šifrovanog teksta zavisi od prethodnog bloka, tako da nije moguće šifrovati više blokova odjednom. Dešifrovanje je moguće sprovesti nad više blokova odjednom ukoliko su svi blokovi šifrovanog teksta dostupni u trenutku dešifrovanja. Zbog ove zavisnosti u podacima, greška u jednom bitu tokom transporta bloka šifrovanog teksta će uticati na blok koji se dešifruje, kao i na naredni blok (jer se sa neispravnim blokom radi operacija XOR).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Sanja je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od heksadecimalnih cifara, koristi CCM mod funkcionisanja i algoritam enkripcije radi na nivou bajtova i funkcioniše na sledeći način:&lt;br /&gt;
 ulaz: b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-2&amp;lt;/sub&amp;gt; ... b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;; izlaz: b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ...&lt;br /&gt;
(ukratko, prvo se uzima prvi bajt sa desne strane, pa sa leve strane, pa drugi bajt sa desne strane, pa sa leve strane i tako do kraja).&lt;br /&gt;
&lt;br /&gt;
Nonce vrednost je &#039;&#039;&#039;ABCDEFABCDEFABCDEFABCDEF&#039;&#039;&#039;. Drugarica je primila šifrovanu poruku &#039;&#039;&#039;C1C2ACA4FE2601&#039;&#039;&#039; (MAC nije uključen u ovu poruku).&lt;br /&gt;
&lt;br /&gt;
# Koja je vrednost prvog ulaznog bloka tokom dešifrovanja poruke? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;02ABCDEFABCDEFABCDEFABCDEF000001&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je vrednost nakon šifrovanja prvog ulaznog bloka? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;010200AB00CDEFEFCDABABCDEFEFCDAB&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je dešifrovana vrednost? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;C0C0AC0FFEEBEE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruke za koju se obezbeđuje isključivo tajnost?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# Identifikator javnog ključa pošiljaoca&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za asimetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot;&amp;gt;Ovaj odgovor je na kolokvijumu bio označen kao tačan, ali kako nije pisao na prezentaciji nakon kolokvijuma je označen kao nevažeći na način koji ne oštećuje nijednog studenta.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za simetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot; /&amp;gt;&lt;br /&gt;
# Identifikator algoritma za hash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8014</id>
		<title>Заштита података/К2 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8014"/>
		<updated>2025-09-19T12:15:23Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 4. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum 2023. godine&#039;&#039;&#039; održan je 5. maja i trajao je sat vremena. Na kolokvijumu su bili dostupni Windows 7 kalkulator, Notepad, Notepad++ i pretraživač.&lt;br /&gt;
&lt;br /&gt;
== 1. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; U šemi za distribuciju ključeva korišćenjem centra za dostavljanje ključeva (KDC) prikazanoj na slici:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 1 zadatak 1.svg|frame|center|Šema za distribuciju ključeva]]&lt;br /&gt;
Šta predstavlja ključ &amp;lt;math&amp;gt;K_s&amp;lt;/math&amp;gt;, čemu služi, ko ga sve poseduje i ako ga poseduje više učesnika na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Sesijski ključevi Ks služe za uspostavljanje sesije između dve partije (A i B), ovakvi ključevi traju koliko i logička konekcija između te dve partije. Obe partije dobijaju sesijski ključ Ks od KDC (Key Distribution Centre) autoriteta. Kada dobiju sesijski ključ komunikacija između A i B može da počne, naravno, nakon razmenjivanja N1 i N2 nonce vrednosti zarad autentičnosti dalje komunikacije (stranica 480. u knjizi, slika Figure 15.5)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Gmail servis danas ima 1.5 milijardi korisnika koji pristup mejlu obezbeđuje pomoću korisničkog imena i lozinke. Ako bi sistem čuvao lozinke tako što bi se čuvale kao &#039;&#039;hash&#039;&#039; (&#039;&#039;password&#039;&#039;+&#039;&#039;salt&#039;&#039;), i ako bi se koristila &#039;&#039;hash&#039;&#039; funkcija čiji je izlaz 64 bita, verovatnoća da će dve lozinke dati isti &#039;&#039;hash&#039;&#039; u ovom slučaju je (netačan odgovori nosi -25%, &amp;quot;Ne znam&amp;quot; nosi 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Tačno 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manja od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veća od 50%&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
da bi bilo više od 50% šanse za slabu koliziju potrebno je 2^32 &amp;gt; 1.5B lozinki, pa je verovatnoća manja od 50%&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; &lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u ECB (&#039;&#039;Electronic CodeBook&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na ECB mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Moguće je izvršiti enkripciju i dekripciju u paraleli jer se nezavisno šifruju blokovi (u odnosu na CBC gde se chain-uju blokovi i greška propagira dalje). Greška u jednom biti priliku transporta utiče samo na taj blok Pi zato što ECB šifruje svaki blok plaintext-a nezavisno, greška će se pojaviti samo u tom bloku Ci.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; TBA&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruka za koju se obezbeđuje isključivo autentikacija?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa pošiljaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# Identifikator javnog ključa primaoca&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# Identifikator algoritma za asimetrične ključeve&lt;br /&gt;
# Identifikator algoritma za simetrične ključeve&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za hash&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Data je sledeća šema za decentralizovanu razmenu ključeva:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 2 zadatak 1.svg|frame|center|Šema iz prvog zadatka.]]&lt;br /&gt;
Šta na ovoj šemi predstavlja ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;, čemu služi, ko ga sve poseduje i, ukoliko ga poseduje više učesnika, na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; predstavlja &#039;&#039;master&#039;&#039; ključ, koji služi kako bi A i B razmenjivali &#039;&#039;slave&#039;&#039; ključeve sa kojima će šifrovati svoju komunikaciju. Moraju da ga poseduju i A i B kako bi razmenjivali &#039;&#039;slave&#039;&#039; ključeve, a može biti razmenjen komunikacijom preko nekog sigurnog kanala (na primer, A i B se nađu uživo na tajnom mestu i razmene ovaj ključ).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#5. zadatak|peti zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=110, S_2=791&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=1760, S_2=640&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3769&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q = 5003&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 4999&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1682. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4890&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2419&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Samo prvi digitalni potpis je ispravan, samo tada poruka &#039;&#039;M&#039;&#039; nije menjana tokom prenosa i potpisala ju je Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u CBC (&#039;&#039;Cipher Block Chain&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na CBC mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;U CBC modu funkcionisanja jedan blok šifrovanog teksta zavisi od prethodnog bloka, tako da nije moguće šifrovati više blokova odjednom. Dešifrovanje je moguće sprovesti nad više blokova odjednom ukoliko su svi blokovi šifrovanog teksta dostupni u trenutku dešifrovanja. Zbog ove zavisnosti u podacima, greška u jednom bitu tokom transporta bloka šifrovanog teksta će uticati na blok koji se dešifruje, kao i na naredni blok (jer se sa neispravnim blokom radi operacija XOR).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Sanja je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od heksadecimalnih cifara, koristi CCM mod funkcionisanja i algoritam enkripcije radi na nivou bajtova i funkcioniše na sledeći način:&lt;br /&gt;
 ulaz: b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-2&amp;lt;/sub&amp;gt; ... b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;; izlaz: b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ...&lt;br /&gt;
(ukratko, prvo se uzima prvi bajt sa desne strane, pa sa leve strane, pa drugi bajt sa desne strane, pa sa leve strane i tako do kraja).&lt;br /&gt;
&lt;br /&gt;
Nonce vrednost je &#039;&#039;&#039;ABCDEFABCDEFABCDEFABCDEF&#039;&#039;&#039;. Drugarica je primila šifrovanu poruku &#039;&#039;&#039;C1C2ACA4FE2601&#039;&#039;&#039; (MAC nije uključen u ovu poruku).&lt;br /&gt;
&lt;br /&gt;
# Koja je vrednost prvog ulaznog bloka tokom dešifrovanja poruke? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;02ABCDEFABCDEFABCDEFABCDEF000001&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je vrednost nakon šifrovanja prvog ulaznog bloka? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;010200AB00CDEFEFCDABABCDEFEFCDAB&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je dešifrovana vrednost? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;C0C0AC0FFEEBEE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruke za koju se obezbeđuje isključivo tajnost?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# Identifikator javnog ključa pošiljaoca&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za asimetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot;&amp;gt;Ovaj odgovor je na kolokvijumu bio označen kao tačan, ali kako nije pisao na prezentaciji nakon kolokvijuma je označen kao nevažeći na način koji ne oštećuje nijednog studenta.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za simetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot; /&amp;gt;&lt;br /&gt;
# Identifikator algoritma za hash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8013</id>
		<title>Заштита података/К2 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8013"/>
		<updated>2025-09-19T12:14:30Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 3. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum 2023. godine&#039;&#039;&#039; održan je 5. maja i trajao je sat vremena. Na kolokvijumu su bili dostupni Windows 7 kalkulator, Notepad, Notepad++ i pretraživač.&lt;br /&gt;
&lt;br /&gt;
== 1. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; U šemi za distribuciju ključeva korišćenjem centra za dostavljanje ključeva (KDC) prikazanoj na slici:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 1 zadatak 1.svg|frame|center|Šema za distribuciju ključeva]]&lt;br /&gt;
Šta predstavlja ključ &amp;lt;math&amp;gt;K_s&amp;lt;/math&amp;gt;, čemu služi, ko ga sve poseduje i ako ga poseduje više učesnika na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Sesijski ključevi Ks služe za uspostavljanje sesije između dve partije (A i B), ovakvi ključevi traju koliko i logička konekcija između te dve partije. Obe partije dobijaju sesijski ključ Ks od KDC (Key Distribution Centre) autoriteta. Kada dobiju sesijski ključ komunikacija između A i B može da počne, naravno, nakon razmenjivanja N1 i N2 nonce vrednosti zarad autentičnosti dalje komunikacije (stranica 480. u knjizi, slika Figure 15.5)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Gmail servis danas ima 1.5 milijardi korisnika koji pristup mejlu obezbeđuje pomoću korisničkog imena i lozinke. Ako bi sistem čuvao lozinke tako što bi se čuvale kao &#039;&#039;hash&#039;&#039; (&#039;&#039;password&#039;&#039;+&#039;&#039;salt&#039;&#039;), i ako bi se koristila &#039;&#039;hash&#039;&#039; funkcija čiji je izlaz 64 bita, verovatnoća da će dve lozinke dati isti &#039;&#039;hash&#039;&#039; u ovom slučaju je (netačan odgovori nosi -25%, &amp;quot;Ne znam&amp;quot; nosi 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Tačno 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manja od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veća od 50%&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
da bi bilo više od 50% šanse za slabu koliziju potrebno je 2^32 &amp;gt; 1.5B lozinki, pa je verovatnoća manja od 50%&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; &lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u ECB (&#039;&#039;Electronic CodeBook&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na ECB mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Moguće je izvršiti enkripciju i dekripciju u paraleli jer se nezavisno šifruju blokovi (u odnosu na CBC gde se chain-uju blokovi i greška propagira dalje). Greška u jednom biti priliku transporta utiče samo na taj blok Pi zato što ECB šifruje svaki blok plaintext-a nezavisno, greška će se pojaviti samo u tom bloku Ci.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; TBA&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruka za koju se obezbeđuje isključivo autentikacija?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa pošiljaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# Identifikator javnog ključa primaoca&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# Identifikator algoritma za asimetrične ključeve&lt;br /&gt;
# Identifikator algoritma za simetrične ključeve&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za hash&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Data je sledeća šema za decentralizovanu razmenu ključeva:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 2 zadatak 1.svg|frame|center|Šema iz prvog zadatka.]]&lt;br /&gt;
Šta na ovoj šemi predstavlja ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;, čemu služi, ko ga sve poseduje i, ukoliko ga poseduje više učesnika, na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; predstavlja &#039;&#039;master&#039;&#039; ključ, koji služi kako bi A i B razmenjivali &#039;&#039;slave&#039;&#039; ključeve sa kojima će šifrovati svoju komunikaciju. Moraju da ga poseduju i A i B kako bi razmenjivali &#039;&#039;slave&#039;&#039; ključeve, a može biti razmenjen komunikacijom preko nekog sigurnog kanala (na primer, A i B se nađu uživo na tajnom mestu i razmene ovaj ključ).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#5. zadatak|peti zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=110, S_2=791&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=1760, S_2=640&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3769&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q = 5003&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 4999&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1682. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4890&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2419&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Samo prvi digitalni potpis je ispravan, samo tada poruka &#039;&#039;M&#039;&#039; nije menjana tokom prenosa i potpisala ju je Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u CBC (&#039;&#039;Cipher Block Chain&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na CBC mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;U CBC modu funkcionisanja jedan blok šifrovanog teksta zavisi od prethodnog bloka, tako da nije moguće šifrovati više blokova odjednom. Dešifrovanje je moguće sprovesti nad više blokova odjednom ukoliko su svi blokovi šifrovanog teksta dostupni u trenutku dešifrovanja. Zbog ove zavisnosti u podacima, greška u jednom bitu tokom transporta bloka šifrovanog teksta će uticati na blok koji se dešifruje, kao i na naredni blok (jer se sa neispravnim blokom radi operacija XOR).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Sanja je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od heksadecimalnih cifara, koristi CCM mod funkcionisanja i algoritam enkripcije radi na nivou bajtova i funkcioniše na sledeći način:&lt;br /&gt;
 ulaz: b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-2&amp;lt;/sub&amp;gt; ... b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;; izlaz: b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ...&lt;br /&gt;
(ukratko, prvo se uzima prvi bajt sa desne strane, pa sa leve strane, pa drugi bajt sa desne strane, pa sa leve strane i tako do kraja).&lt;br /&gt;
&lt;br /&gt;
Nonce vrednost je &#039;&#039;&#039;ABCDEFABCDEFABCDEFABCDEF&#039;&#039;&#039;. Drugarica je primila šifrovanu poruku &#039;&#039;&#039;C1C2ACA4FE2601&#039;&#039;&#039; (MAC nije uključen u ovu poruku).&lt;br /&gt;
&lt;br /&gt;
# Koja je vrednost prvog ulaznog bloka tokom dešifrovanja poruke? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;02ABCDEFABCDEFABCDEFABCDEF000001&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je vrednost nakon šifrovanja prvog ulaznog bloka? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;010200AB00CDEFEFCDABABCDEFEFCDAB&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je dešifrovana vrednost? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;C0C0AC0FFEEBEE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruke za koju se obezbeđuje isključivo tajnost?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# Identifikator javnog ključa pošiljaoca&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za asimetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot;&amp;gt;Ovaj odgovor je na kolokvijumu bio označen kao tačan, ali kako nije pisao na prezentaciji nakon kolokvijuma je označen kao nevažeći na način koji ne oštećuje nijednog studenta.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za simetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot; /&amp;gt;&lt;br /&gt;
# Identifikator algoritma za hash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8012</id>
		<title>Заштита података/К2 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A2_2023&amp;diff=8012"/>
		<updated>2025-09-19T12:12:57Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 1. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Drugi kolokvijum 2023. godine&#039;&#039;&#039; održan je 5. maja i trajao je sat vremena. Na kolokvijumu su bili dostupni Windows 7 kalkulator, Notepad, Notepad++ i pretraživač.&lt;br /&gt;
&lt;br /&gt;
== 1. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; U šemi za distribuciju ključeva korišćenjem centra za dostavljanje ključeva (KDC) prikazanoj na slici:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 1 zadatak 1.svg|frame|center|Šema za distribuciju ključeva]]&lt;br /&gt;
Šta predstavlja ključ &amp;lt;math&amp;gt;K_s&amp;lt;/math&amp;gt;, čemu služi, ko ga sve poseduje i ako ga poseduje više učesnika na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Sesijski ključevi Ks služe za uspostavljanje sesije između dve partije (A i B), ovakvi ključevi traju koliko i logička konekcija između te dve partije. Obe partije dobijaju sesijski ključ Ks od KDC (Key Distribution Centre) autoriteta. Kada dobiju sesijski ključ komunikacija između A i B može da počne, naravno, nakon razmenjivanja N1 i N2 nonce vrednosti zarad autentičnosti dalje komunikacije (stranica 480. u knjizi, slika Figure 15.5)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Gmail servis danas ima 1.5 milijardi korisnika koji pristup mejlu obezbeđuje pomoću korisničkog imena i lozinke. Ako bi sistem čuvao lozinke tako što bi se čuvale kao &#039;&#039;hash&#039;&#039; (&#039;&#039;password&#039;&#039;+&#039;&#039;salt&#039;&#039;), i ako bi se koristila &#039;&#039;hash&#039;&#039; funkcija čiji je izlaz 64 bita, verovatnoća da će dve lozinke dati isti &#039;&#039;hash&#039;&#039; u ovom slučaju je (netačan odgovori nosi -25%, &amp;quot;Ne znam&amp;quot; nosi 0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# Tačno 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Manja od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Veća od 50%&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
da bi bilo više od 50% šanse za slabu koliziju potrebno je 2^32 &amp;gt; 1.5B lozinki, pa je verovatnoća manja od 50%&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#1. zadatak|prvi zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u ECB (&#039;&#039;Electronic CodeBook&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na ECB mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Moguće je izvršiti enkripciju i dekripciju u paraleli jer se nezavisno šifruju blokovi (u odnosu na CBC gde se chain-uju blokovi i greška propagira dalje). Greška u jednom biti priliku transporta utiče samo na taj blok Pi zato što ECB šifruje svaki blok plaintext-a nezavisno, greška će se pojaviti samo u tom bloku Ci.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; TBA&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruka za koju se obezbeđuje isključivo autentikacija?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa pošiljaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# Identifikator javnog ključa primaoca&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# Identifikator algoritma za asimetrične ključeve&lt;br /&gt;
# Identifikator algoritma za simetrične ključeve&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za hash&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. grupa ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Data je sledeća šema za decentralizovanu razmenu ključeva:&lt;br /&gt;
[[Датотека:ZP K2 2023 grupa 2 zadatak 1.svg|frame|center|Šema iz prvog zadatka.]]&lt;br /&gt;
Šta na ovoj šemi predstavlja ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;, čemu služi, ko ga sve poseduje i, ukoliko ga poseduje više učesnika, na koji način je razmenjen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Ključ K&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt; predstavlja &#039;&#039;master&#039;&#039; ključ, koji služi kako bi A i B razmenjivali &#039;&#039;slave&#039;&#039; ključeve sa kojima će šifrovati svoju komunikaciju. Moraju da ga poseduju i A i B kako bi razmenjivali &#039;&#039;slave&#039;&#039; ključeve, a može biti razmenjen komunikacijom preko nekog sigurnog kanala (na primer, A i B se nađu uživo na tajnom mestu i razmene ovaj ključ).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[2 poena]&#039;&#039;&#039; Isti zadatak kao [[Заштита података/Август 2021#5. zadatak|peti zadatak iz avgustovskog roka 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=110, S_2=791&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=1760, S_2=640&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3769&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q = 5003&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 4999&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1682. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4890&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2419&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Samo prvi digitalni potpis je ispravan, samo tada poruka &#039;&#039;M&#039;&#039; nije menjana tokom prenosa i potpisala ju je Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Da li je u CBC (&#039;&#039;Cipher Block Chain&#039;&#039;) modu funkcionisanja moguće izvršiti enkripciju nad više blokova originalnog teksta u paraleli? A dekripciju?&lt;br /&gt;
&lt;br /&gt;
Kako na CBC mod funkcionisanja utiče greška u jednom bitu prilikom transporta nekog bloka šifrovanog teksta?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;U CBC modu funkcionisanja jedan blok šifrovanog teksta zavisi od prethodnog bloka, tako da nije moguće šifrovati više blokova odjednom. Dešifrovanje je moguće sprovesti nad više blokova odjednom ukoliko su svi blokovi šifrovanog teksta dostupni u trenutku dešifrovanja. Zbog ove zavisnosti u podacima, greška u jednom bitu tokom transporta bloka šifrovanog teksta će uticati na blok koji se dešifruje, kao i na naredni blok (jer se sa neispravnim blokom radi operacija XOR).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Sanja je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od heksadecimalnih cifara, koristi CCM mod funkcionisanja i algoritam enkripcije radi na nivou bajtova i funkcioniše na sledeći način:&lt;br /&gt;
 ulaz: b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-2&amp;lt;/sub&amp;gt; ... b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;; izlaz: b&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;n-1&amp;lt;/sub&amp;gt; b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; ...&lt;br /&gt;
(ukratko, prvo se uzima prvi bajt sa desne strane, pa sa leve strane, pa drugi bajt sa desne strane, pa sa leve strane i tako do kraja).&lt;br /&gt;
&lt;br /&gt;
Nonce vrednost je &#039;&#039;&#039;ABCDEFABCDEFABCDEFABCDEF&#039;&#039;&#039;. Drugarica je primila šifrovanu poruku &#039;&#039;&#039;C1C2ACA4FE2601&#039;&#039;&#039; (MAC nije uključen u ovu poruku).&lt;br /&gt;
&lt;br /&gt;
# Koja je vrednost prvog ulaznog bloka tokom dešifrovanja poruke? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;02ABCDEFABCDEFABCDEFABCDEF000001&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je vrednost nakon šifrovanja prvog ulaznog bloka? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;010200AB00CDEFEFCDABABCDEFEFCDAB&amp;lt;/span&amp;gt;&lt;br /&gt;
# Koja je dešifrovana vrednost? &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;C0C0AC0FFEEBEE&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šta je sve od navedenog deo PGP poruke za koju se obezbeđuje isključivo tajnost?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem pošiljaoca&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Sesijski ključ kojim je šifrovan potpis, šifrovan javnim ključem primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Sesijski ključ kojim je šifrovan potpis, šifrovan privatnim ključem primaoca&lt;br /&gt;
# Identifikator javnog ključa pošiljaoca&lt;br /&gt;
# Identifikator privatnog ključa pošiljaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator javnog ključa primaoca&amp;lt;/span&amp;gt;&lt;br /&gt;
# Identifikator privatnog ključa primaoca&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za asimetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot;&amp;gt;Ovaj odgovor je na kolokvijumu bio označen kao tačan, ali kako nije pisao na prezentaciji nakon kolokvijuma je označen kao nevažeći na način koji ne oštećuje nijednog studenta.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Identifikator algoritma za simetrične ključeve&amp;lt;/span&amp;gt;&amp;lt;ref name=&amp;quot;algoritmi&amp;quot; /&amp;gt;&lt;br /&gt;
# Identifikator algoritma za hash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Napomene ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=8011</id>
		<title>Програмски преводиоци 1/Фебруар 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=8011"/>
		<updated>2025-09-18T18:00:14Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u februarskom roku 2021. godine&#039;&#039;&#039; održan je 12. februara. Postavka roka je dostupna [http://ir4pp1.etf.rs/Rokovi/2020-2021/pp1-2021-februar-ispit.pdf sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sekvenca od nula ili više promenljivih razdvojenih zarezima. Svaka promenljiva predstavlja niz od jednog ili više znakova, počinje obavezno malim slovom, nakon čega može doći prozvoljan broj znakova iz skupa koji čine mala slova, cifre i specijalni karakter &amp;quot;_&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napisati regularni izraz koji opisuje navedenu sekvencu.&lt;br /&gt;
# Na osnovu regularnog izraza pod a) formirati minimalni DKA korišćenjem metoda pozicije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 1 stablo.svg|thumb|Sintaksno stablo u prvom zadatku.]]&lt;br /&gt;
Regularni izraz koji prepoznaje ovu sekvencu može biti &amp;lt;code&amp;gt;(mo*(,mo*)*|)&amp;lt;/code&amp;gt;, gde je &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; oznaka za malo slovo a &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; oznaka za mala slova, velika slova i donju crtu.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
! 1&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Pretvaranje nedeterminističkog konačnog automata u deterministički&lt;br /&gt;
!         !! m       !! o       !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → 1, 6  || 2, 3, 6 ||         ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2, 3, 6 ||         || 2, 3, 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4       || 3, 5, 6 ||         ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| 3, 5, 6 ||         || 3, 5, 6 || 4 || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!     !! m !! o !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A || B ||   ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| B   ||   || B || C || 1&lt;br /&gt;
|-&lt;br /&gt;
| C   || D ||   ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| D   ||   || D || C || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za datu gramatiku&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → ε&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;&lt;br /&gt;
# &amp;amp;lt;B&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;C&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;D&amp;gt; → ε&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LR(0) automata i vrstu ∇ kontrolne tabele SLR(1) parsera. Ima li konflikata?&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LALR(1) automata i vrstu ∇ kontrolne tabele LALR(1) parsera. Ima li konflikata?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Napomena: ne crtati ostatak karakterističnog automata, niti ostatak kontrolne tabele.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Stanje ∇ sadrži u sebi sledeće smene:&lt;br /&gt;
* &amp;amp;lt;S&#039;&amp;gt; → • &amp;amp;lt;S&amp;gt; ─┤, {}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → • &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;, {─┤}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → •, {─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;B&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {b}&lt;br /&gt;
* &amp;amp;lt;C&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {c}&lt;br /&gt;
Kako bismo odredili ∇ vrstu kontrolne tabele SLR(1) parsera, moramo odrediti i relevantne FIRST i FOLLOW skupove:&lt;br /&gt;
* FOLLOW(&amp;amp;lt;C&amp;gt;) = {c}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤}&lt;br /&gt;
* FIRST(&amp;amp;lt;S&amp;gt;) = FIRST(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;B&amp;gt;) ∪ FIRST(&amp;amp;lt;C&amp;gt;) = {a}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;S&amp;gt;) ∪ FOLLOW(&amp;amp;lt;S&amp;gt;) = {a, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;B&amp;gt;) = FOLLOW(&amp;amp;lt;A&amp;gt;) ∪ {b, c} = {a, b, c, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;D&amp;gt;) = FOLLOW(&amp;amp;lt;C&amp;gt;) ∪ FOLLOW(&amp;amp;lt;B&amp;gt;) = {a, b, c, ─┤}&lt;br /&gt;
Odavde možemo videti da se u &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; koloni nalazi SHIFT, a u ─┤ koloni REDUCE(2). Kontrolna tabela bi trebalo da je ista za oba parsera.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → a &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; b&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → c &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → d&lt;br /&gt;
&lt;br /&gt;
Na ulaz LR(0) parsera koji je opisan datom gramatikom dovedi se ulazna sekvenca &amp;lt;code&amp;gt;accbcadb&amp;lt;/code&amp;gt;. Pretpostavka je da se za oporavak od grešaka koristi jednostavan panic mode algoritam:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# sa sigurnim simbolom c.&lt;br /&gt;
# sa sigurnim simbolom d.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Za tačku a) i b) zasebno prikazati rad parsera i jasno naznačiti da li je parser uspešno završio parsiranje.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Kontrolna tabela LR(0) parsera&lt;br /&gt;
! Stanje             !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt; || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ─┤&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;      || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
| a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;      || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;      || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
a)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom c&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 1&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cadb─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || adb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || ─┤ || PANIC: POP 4&lt;br /&gt;
|-&lt;br /&gt;
| ∇  || ─┤ || REJECT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser nije uspešno završio parsiranje, tj. sekvence se odbija.&lt;br /&gt;
&lt;br /&gt;
b)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom d&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || db─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;  || b─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ─┤ || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;  || ─┤ || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser je uspešno završio parsiranje, tj. sekvence se prihvata.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Kompajler za mikrojavu na izlazu daje sledeći ispis tabele simbola i listing bajtkoda. Kako izgleda izvorni mikrojava program koji odgovara ovim izlazima?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==================SADRŽAJ TABELE SIMBOLA=======================&lt;br /&gt;
(Level -1)&lt;br /&gt;
Type int: int, 0, 0&lt;br /&gt;
Type char: char, 0, 0&lt;br /&gt;
Con eol: char, 10, 0&lt;br /&gt;
Con null: Class, 0, 0&lt;br /&gt;
Meth chr: char, 0, 1 [Var i: int, 0, 1 ]&lt;br /&gt;
Meth ord: int, 0, 1 [Var ch: char, 0, 1 ]&lt;br /&gt;
Meth len: int, 0, 1 [Var arr: Arr of notype, 0, 1 ]&lt;br /&gt;
Prog PROBA: notype, 0, 0&lt;br /&gt;
[Type SUPERKLASA: Class, 0, 0 [Fld s: int, 1, 1 ][Meth foo: int, 0, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Type POTKLASA: Class, 6, 0 [Fld s: int, 1, 1 ][Fld p: int, 2, 1 ][Meth foo: int, 9, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Var sk: Class, 12, 0 ]&lt;br /&gt;
[Meth main: notype, 19, 0 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mikrojava bajkod:&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: enter 1 1&lt;br /&gt;
3: const_0&lt;br /&gt;
4: jmp 3 (=7)&lt;br /&gt;
7: exit&lt;br /&gt;
8: return&lt;br /&gt;
9: enter 1 1&lt;br /&gt;
12: const_1&lt;br /&gt;
13: neg&lt;br /&gt;
14: jmp 3 (=17)&lt;br /&gt;
17: exit&lt;br /&gt;
18: return&lt;br /&gt;
19: enter 0 0&lt;br /&gt;
22: const 102&lt;br /&gt;
27: putstatic 0&lt;br /&gt;
30: const 111&lt;br /&gt;
35: putstatic 1&lt;br /&gt;
38: const 111&lt;br /&gt;
43: putstatic 2&lt;br /&gt;
46: const_m1&lt;br /&gt;
47: putstatic 3&lt;br /&gt;
50: const 0&lt;br /&gt;
55: putstatic 4&lt;br /&gt;
58: const -2&lt;br /&gt;
63: putstatic 5&lt;br /&gt;
66: const 102&lt;br /&gt;
71: putstatic 6&lt;br /&gt;
74: const 111&lt;br /&gt;
79: putstatic 7&lt;br /&gt;
82: const 111&lt;br /&gt;
87: putstatic 8&lt;br /&gt;
90: const_m1&lt;br /&gt;
91: putstatic 9&lt;br /&gt;
94: const 9&lt;br /&gt;
99: putstatic 10&lt;br /&gt;
102: const -2&lt;br /&gt;
107: putstatic 11&lt;br /&gt;
110: new 12&lt;br /&gt;
113: dup&lt;br /&gt;
114: const 6&lt;br /&gt;
119: putfield 0&lt;br /&gt;
122: putstatic 12&lt;br /&gt;
125: getstatic 12&lt;br /&gt;
128: const_1&lt;br /&gt;
129: putfield 1&lt;br /&gt;
132: getstatic 12&lt;br /&gt;
135: dup&lt;br /&gt;
136: getfield 0&lt;br /&gt;
139: invokevirtual foo&lt;br /&gt;
156: const_0&lt;br /&gt;
157: print&lt;br /&gt;
158: exit&lt;br /&gt;
159: return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Iz gorenavedene tabele simbola ne može se zaključiti da li je &amp;lt;code&amp;gt;sk&amp;lt;/code&amp;gt; promenljiva tipa &amp;lt;code&amp;gt;SUPERKLASA&amp;lt;/code&amp;gt; ili &amp;lt;code&amp;gt;POTKLASA&amp;lt;/code&amp;gt;, pa se zaključuje na osnovu njenog imena.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
program PROBA&lt;br /&gt;
    class SUPERKLASA {&lt;br /&gt;
        int s;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class POTKLASA extends SUPERKLASA {&lt;br /&gt;
        int p;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return -1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    SUPERKLASA sk;&lt;br /&gt;
    {&lt;br /&gt;
        void main() {&lt;br /&gt;
            sk = new POTKLASA();&lt;br /&gt;
            sk.s = 1;&lt;br /&gt;
            print(sk.foo(), 0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati programski fragment napisati odgovarajući međukod u SSA formi i nacrtati graf toka kontrole na nivou osnovnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
x = 0;&lt;br /&gt;
y = 1;&lt;br /&gt;
z = 2;&lt;br /&gt;
do {&lt;br /&gt;
    x = x - 1;&lt;br /&gt;
&lt;br /&gt;
    if (z == 0) break;&lt;br /&gt;
    else y = y + z;&lt;br /&gt;
&lt;br /&gt;
    z = y + 1;&lt;br /&gt;
} while (z &amp;gt; 1 &amp;amp;&amp;amp; x == 0);&lt;br /&gt;
x = z - y;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 5 graf.svg|thumb|Graf toka kontrole u petom zadatku.]]&lt;br /&gt;
# x1 := 0&lt;br /&gt;
# y1 := 1&lt;br /&gt;
# z1 := 2&lt;br /&gt;
# t1 := Ф(x1, x2)&lt;br /&gt;
# t2 := t1 - 1&lt;br /&gt;
# x2 := t2&lt;br /&gt;
# t3 := Ф(z1, z2)&lt;br /&gt;
# if t3 == 0 goto 17&lt;br /&gt;
# t4 := Ф(y1, y2)&lt;br /&gt;
# t5 := Ф(z1, z2)&lt;br /&gt;
# t6 := t4 + t5&lt;br /&gt;
# y2 := t6&lt;br /&gt;
# t7 := y2 + 1&lt;br /&gt;
# z2 := t7&lt;br /&gt;
# if z2 &amp;lt;= 1 goto 17&lt;br /&gt;
# if x2 == 0 goto 4&lt;br /&gt;
# t8 := Ф(y1, y2)&lt;br /&gt;
# t9 := Ф(z1, z2)&lt;br /&gt;
# t10 := t9 - t8&lt;br /&gt;
# x3 := t10&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=8010</id>
		<title>Програмски преводиоци 1/Фебруар 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=8010"/>
		<updated>2025-09-18T17:58:59Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u februarskom roku 2021. godine&#039;&#039;&#039; održan je 12. februara. Postavka roka je dostupna [http://ir4pp1.etf.rs/Rokovi/2020-2021/pp1-2021-februar-ispit.pdf sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sekvenca od nula ili više promenljivih razdvojenih zarezima. Svaka promenljiva predstavlja niz od jednog ili više znakova, počinje obavezno malim slovom, nakon čega može doći prozvoljan broj znakova iz skupa koji čine mala slova, cifre i specijalni karakter &amp;quot;_&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napisati regularni izraz koji opisuje navedenu sekvencu.&lt;br /&gt;
# Na osnovu regularnog izraza pod a) formirati minimalni DKA korišćenjem metoda pozicije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 1 stablo.svg|thumb|Sintaksno stablo u prvom zadatku.]]&lt;br /&gt;
Regularni izraz koji prepoznaje ovu sekvencu može biti &amp;lt;code&amp;gt;(mo*(,mo*)*|)&amp;lt;/code&amp;gt;, gde je &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; oznaka za malo slovo a &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; oznaka za mala slova, velika slova i donju crtu.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
! 1&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Pretvaranje nedeterminističkog konačnog automata u deterministički&lt;br /&gt;
!         !! m       !! o       !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → 1, 6  || 2, 3, 6 ||         ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2, 3, 6 ||         || 2, 3, 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4       || 3, 5, 6 ||         ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| 3, 5, 6 ||         || 3, 5, 6 || 4 || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!     !! m !! o !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A || B ||   ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| B   ||   || B || C || 1&lt;br /&gt;
|-&lt;br /&gt;
| C   || D ||   ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| D   ||   || D || C || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za datu gramatiku&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → ε&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;&lt;br /&gt;
# &amp;amp;lt;B&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;C&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;D&amp;gt; → ε&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LR(0) automata i vrstu ∇ kontrolne tabele SLR(1) parsera. Ima li konflikata?&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LALR(1) automata i vrstu ∇ kontrolne tabele LALR(1) parsera. Ima li konflikata?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Napomena: ne crtati ostatak karakterističnog automata, niti ostatak kontrolne tabele.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Stanje ∇ sadrži u sebi sledeće smene:&lt;br /&gt;
* &amp;amp;lt;S&#039;&amp;gt; → • &amp;amp;lt;S&amp;gt; ─┤, {}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → • &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;, {─┤}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → •, {─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;B&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {b}&lt;br /&gt;
* &amp;amp;lt;C&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {c}&lt;br /&gt;
Kako bismo odredili ∇ vrstu kontrolne tabele SLR(1) parsera, moramo odrediti i relevantne FIRST i FOLLOW skupove:&lt;br /&gt;
* FOLLOW(&amp;amp;lt;C&amp;gt;) = {c}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤}&lt;br /&gt;
* FIRST(&amp;amp;lt;S&amp;gt;) = FIRST(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;B&amp;gt;) ∪ FIRST(&amp;amp;lt;C&amp;gt;) = {a}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;S&amp;gt;) ∪ FOLLOW(&amp;amp;lt;S&amp;gt;) = {a, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;B&amp;gt;) = FOLLOW(&amp;amp;lt;A&amp;gt;) ∪ {b, c} = {a, b, c, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;D&amp;gt;) = FOLLOW(&amp;amp;lt;C&amp;gt;) ∪ FOLLOW(&amp;amp;lt;B&amp;gt;) = {a, b, c, ─┤}&lt;br /&gt;
Odavde možemo videti da se u &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; koloni nalazi SHIFT, a u ─┤ koloni REDUCE(2). Kontrolna tabela bi trebalo da je ista za oba parsera.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → a &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; b&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → c &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → d&lt;br /&gt;
&lt;br /&gt;
Na ulaz LR(0) parsera koji je opisan datom gramatikom dovedi se ulazna sekvenca &amp;lt;code&amp;gt;accbcadb&amp;lt;/code&amp;gt;. Pretpostavka je da se za oporavak od grešaka koristi jednostavan panic mode algoritam:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# sa sigurnim simbolom c.&lt;br /&gt;
# sa sigurnim simbolom d.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Za tačku a) i b) zasebno prikazati rad parsera i jasno naznačiti da li je parser uspešno završio parsiranje.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Kontrolna tabela LR(0) parsera&lt;br /&gt;
! Stanje             !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt; || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ─┤&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;      || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
| a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;      || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;      || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
a)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom c&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 1&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cadb─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || adb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || ─┤ || PANIC: POP 4&lt;br /&gt;
|-&lt;br /&gt;
| ∇  || ─┤ || REJECT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser nije uspešno završio parsiranje, tj. sekvence se odbija.&lt;br /&gt;
&lt;br /&gt;
b)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom d&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || db─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;  || b─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt;b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;  || ─┤ || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt;  || ─┤ || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser je uspešno završio parsiranje, tj. sekvence se prihvata.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Kompajler za mikrojavu na izlazu daje sledeći ispis tabele simbola i listing bajtkoda. Kako izgleda izvorni mikrojava program koji odgovara ovim izlazima?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==================SADRŽAJ TABELE SIMBOLA=======================&lt;br /&gt;
(Level -1)&lt;br /&gt;
Type int: int, 0, 0&lt;br /&gt;
Type char: char, 0, 0&lt;br /&gt;
Con eol: char, 10, 0&lt;br /&gt;
Con null: Class, 0, 0&lt;br /&gt;
Meth chr: char, 0, 1 [Var i: int, 0, 1 ]&lt;br /&gt;
Meth ord: int, 0, 1 [Var ch: char, 0, 1 ]&lt;br /&gt;
Meth len: int, 0, 1 [Var arr: Arr of notype, 0, 1 ]&lt;br /&gt;
Prog PROBA: notype, 0, 0&lt;br /&gt;
[Type SUPERKLASA: Class, 0, 0 [Fld s: int, 1, 1 ][Meth foo: int, 0, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Type POTKLASA: Class, 6, 0 [Fld s: int, 1, 1 ][Fld p: int, 2, 1 ][Meth foo: int, 9, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Var sk: Class, 12, 0 ]&lt;br /&gt;
[Meth main: notype, 19, 0 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mikrojava bajkod:&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: enter 1 1&lt;br /&gt;
3: const_0&lt;br /&gt;
4: jmp 3 (=7)&lt;br /&gt;
7: exit&lt;br /&gt;
8: return&lt;br /&gt;
9: enter 1 1&lt;br /&gt;
12: const_1&lt;br /&gt;
13: neg&lt;br /&gt;
14: jmp 3 (=17)&lt;br /&gt;
17: exit&lt;br /&gt;
18: return&lt;br /&gt;
19: enter 0 0&lt;br /&gt;
22: const 102&lt;br /&gt;
27: putstatic 0&lt;br /&gt;
30: const 111&lt;br /&gt;
35: putstatic 1&lt;br /&gt;
38: const 111&lt;br /&gt;
43: putstatic 2&lt;br /&gt;
46: const_m1&lt;br /&gt;
47: putstatic 3&lt;br /&gt;
50: const 0&lt;br /&gt;
55: putstatic 4&lt;br /&gt;
58: const -2&lt;br /&gt;
63: putstatic 5&lt;br /&gt;
66: const 102&lt;br /&gt;
71: putstatic 6&lt;br /&gt;
74: const 111&lt;br /&gt;
79: putstatic 7&lt;br /&gt;
82: const 111&lt;br /&gt;
87: putstatic 8&lt;br /&gt;
90: const_m1&lt;br /&gt;
91: putstatic 9&lt;br /&gt;
94: const 9&lt;br /&gt;
99: putstatic 10&lt;br /&gt;
102: const -2&lt;br /&gt;
107: putstatic 11&lt;br /&gt;
110: new 12&lt;br /&gt;
113: dup&lt;br /&gt;
114: const 6&lt;br /&gt;
119: putfield 0&lt;br /&gt;
122: putstatic 12&lt;br /&gt;
125: getstatic 12&lt;br /&gt;
128: const_1&lt;br /&gt;
129: putfield 1&lt;br /&gt;
132: getstatic 12&lt;br /&gt;
135: dup&lt;br /&gt;
136: getfield 0&lt;br /&gt;
139: invokevirtual foo&lt;br /&gt;
156: const_0&lt;br /&gt;
157: print&lt;br /&gt;
158: exit&lt;br /&gt;
159: return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Iz gorenavedene tabele simbola ne može se zaključiti da li je &amp;lt;code&amp;gt;sk&amp;lt;/code&amp;gt; promenljiva tipa &amp;lt;code&amp;gt;SUPERKLASA&amp;lt;/code&amp;gt; ili &amp;lt;code&amp;gt;POTKLASA&amp;lt;/code&amp;gt;, pa se zaključuje na osnovu njenog imena.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
program PROBA&lt;br /&gt;
    class SUPERKLASA {&lt;br /&gt;
        int s;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class POTKLASA extends SUPERKLASA {&lt;br /&gt;
        int p;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return -1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    SUPERKLASA sk;&lt;br /&gt;
    {&lt;br /&gt;
        void main() {&lt;br /&gt;
            sk = new POTKLASA();&lt;br /&gt;
            sk.s = 1;&lt;br /&gt;
            print(sk.foo(), 0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati programski fragment napisati odgovarajući međukod u SSA formi i nacrtati graf toka kontrole na nivou osnovnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
x = 0;&lt;br /&gt;
y = 1;&lt;br /&gt;
z = 2;&lt;br /&gt;
do {&lt;br /&gt;
    x = x - 1;&lt;br /&gt;
&lt;br /&gt;
    if (z == 0) break;&lt;br /&gt;
    else y = y + z;&lt;br /&gt;
&lt;br /&gt;
    z = y + 1;&lt;br /&gt;
} while (z &amp;gt; 1 &amp;amp;&amp;amp; x == 0);&lt;br /&gt;
x = z - y;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 5 graf.svg|thumb|Graf toka kontrole u petom zadatku.]]&lt;br /&gt;
# x1 := 0&lt;br /&gt;
# y1 := 1&lt;br /&gt;
# z1 := 2&lt;br /&gt;
# t1 := Ф(x1, x2)&lt;br /&gt;
# t2 := t1 - 1&lt;br /&gt;
# x2 := t2&lt;br /&gt;
# t3 := Ф(z1, z2)&lt;br /&gt;
# if t3 == 0 goto 17&lt;br /&gt;
# t4 := Ф(y1, y2)&lt;br /&gt;
# t5 := Ф(z1, z2)&lt;br /&gt;
# t6 := t4 + t5&lt;br /&gt;
# y2 := t6&lt;br /&gt;
# t7 := y2 + 1&lt;br /&gt;
# z2 := t7&lt;br /&gt;
# if z2 &amp;lt;= 1 goto 17&lt;br /&gt;
# if x2 == 0 goto 4&lt;br /&gt;
# t8 := Ф(y1, y2)&lt;br /&gt;
# t9 := Ф(z1, z2)&lt;br /&gt;
# t10 := t9 - t8&lt;br /&gt;
# x3 := t10&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1&amp;diff=8009</id>
		<title>Програмски преводиоци 1</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1&amp;diff=8009"/>
		<updated>2025-09-16T21:15:39Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С114ПП1, 13Е114ПП1&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = обавезни&lt;br /&gt;
| страница  = [http://ir4pp1.etf.bg.ac.rs/ ir4pp1.etf.rs]&lt;br /&gt;
| одсек     = СИ, РТИ&lt;br /&gt;
}}&lt;br /&gt;
Значи &#039;&#039;&#039;Програмски преводиоци 1&#039;&#039;&#039; је значи обавезни предмет значи у седмом семестру на СИ и РТИ. Ја уопште нисам одговоран за ово манијакално име пакета.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
* [https://drive.google.com/open?id=107YMW0yq1ShVDAIyVtzLGwJ_H8Sm13D1 ETF SI] (модификације)&lt;br /&gt;
* [https://app.box.com/s/0r50je333z1qyypz0h3rm0iqb9s0d64f/folder/38797850748 ETF Materijali (Box)] (решења старијих рокова)&lt;br /&gt;
* [https://www.youtube.com/playlist?list=PLd4LFMwqLLCfy8fxg6cR6YAEC1jkaDWRt Студентски видео снимци решења задатака са вежби и рокова] (обрађено градиво закључно са „парсирањем од врха ка дну“)&lt;br /&gt;
* [https://drive.google.com/open?id=1ZZ8p48rhYnjIxiJaGCFzyRoQv7tc-Czx Слике презентација Кристијана Жиже] (снимљене вежбе 2020)&lt;br /&gt;
* [[github:ksendzo/PP1-Projekat|Неки савети за израду пројекта]] (основа за водич за пројекат који је на викију)&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1FhDa3-M4vlaFJOpblQJ_wJOiWLhIX1H6NKMOhdXCqE4/edit?gid=0#gid=0 Google tabela] листинг свих пронађених питања с рокова (последње ажурирано јануара 2024.) уз лабелирање по областима&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** лексичка анализа (коначни аутомати, минимизација аутомата, конверзија из недетерминистичког у детерминистички, конверзија регуларног израза у ДКА, лексички процесори),&lt;br /&gt;
** генератори лексичких анализатора (&#039;&#039;JFlex&#039;&#039;),&lt;br /&gt;
** синтаксна анализа (увод у граматике и језике),&lt;br /&gt;
** потисни аутомати&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** парсирање од дна ка врху (LR(0) парсери, SLR(1) парсери, LALR(1) парсери, опоравак од грешака),&lt;br /&gt;
** генератори парсера (&#039;&#039;CUP&#039;&#039;),&lt;br /&gt;
** парсирање од врха ка дну (LL(1) граматике, трансформација у LL(1), конструкција парсера по принципу рекурзивног спуста),&lt;br /&gt;
** атрибутивно-транслационе граматике (S-атрибутивне и L-атрибутивне граматике)&lt;br /&gt;
** апстрактна синтаксна стабла (&#039;&#039;AST-CUP&#039;&#039;)&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** табела симбола (конкретна реализација на пројекту, различите могуће организације, случај вишеструког наслеђивања),&lt;br /&gt;
** Микројава виртуелна машина (меморијски сегменти, инструкције, превођење израза, превођење контролних структура, превођење позива метода, наслеђивање и виртуелни механизам),&lt;br /&gt;
** генерисање међукода (четворке, тројке, граф тока контроле, SSA форма),&lt;br /&gt;
** извршно окружење (контролне и приступне везе, дисплеји, стабла активације),&lt;br /&gt;
** генерисање x86 кода (животни век променљивих, &#039;&#039;getreg&#039;&#039; алгоритам)&lt;br /&gt;
Градиво које се обрађује искључиво на предавањима укључује моделовање коначних аутомата у коду, S-атрибутивне и L-атрибутивне граматике, укључивање акција и атрибута у парсер конструисан по принципу рекурзивног спуста, апстрактна синтаксна стабла и вишеструко наслеђивање. Градиво из &#039;&#039;JFlex&#039;&#039;, &#039;&#039;CUP&#039;&#039; и апстрактних синтаксних стабала, иако теоретски може да дође на колоквијумима, се јако ретко појављује. Градиво S-атрибутивних и L-атрибутивних граматика се чешће појављује на испиту него на колоквијуму.&lt;br /&gt;
&lt;br /&gt;
Сви материјали са вежби и предавања могу се пронаћи на страници предмета, у несрећној комбинацији различитих формата (ZIP, RAR, DOC, PDF и PPT). Презентације Кристијана Жиже, чије су снимљене вежбе из 2020. године, нису доступне (обрисао их је када је одлазио са предмета), али су доступне слике тих презентација из одељка са [[#Корисне везе|корисним везама]]. На вежбама и предавањима се такође могу помињати збирка или уџбеник, оне су доступне са странице предмета (додуше тешко видљиве) и из одељка [[#Литература|са литературом]].&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Пројекат на предмету носи 40 бодова и обавезан је. Услов за излазак на испит је барем 20 бодова освојених на одбрани пројекта. Предаје се до дан или два пред одбрану, са мало ранијом иницијалном предајом ради формирања распореда (као на [[ОО1]] и [[ОО2]]). Пројекат је подељен на 3 нивоа, где ниво А носи 20, ниво Б 30 и ниво Ц 40 бодова (могуће је освојити и број бодова између уколико пројекат испуњава део захтева за виши ниво, или уколико модификација на одбрани само делимично ради). Обично за сваки ниво буде по један захтев специфичан за ту школску годину, али се ниво Б генерално разликује од нивоа А по томе што захтева имплементацију функција, а ниво Ц од нивоа Б по томе што захтева имплементацију класа. На крају израде пројекта тражи се и документ са извештајем о пројекту.&lt;br /&gt;
&lt;br /&gt;
Поставка пројекта се не мења много кроз године. У јануарском и фебруарском року важи једна поставка, у јулском се на ту поставку дода још захтева и у августовском и септембарском још више захтева. &#039;&#039;&#039;Пројекат је могуће бранити само једном по поставци!&#039;&#039;&#039; Ово значи да уколико паднете одбрану у јануару, немате право на одбрану у фебруару, и слично за августовки рок.&lt;br /&gt;
&lt;br /&gt;
Од материјала за пројекат релевантне су вежбе из &#039;&#039;JFlex&#039;&#039;, &#039;&#039;CUP&#039;&#039;, табеле симбола и Микројава виртуелне машине. Поред тога, на страници предмета постоје снимци и изворни код једног студента који ради један мини-пројекат по фазама, који могу бити корисни као увод у алате за израду пројекта и примере имплементације одређених захтева. Већи део кода са тих снимака може се искористити ради имплементације захтева за ниво А на пројекту. На снимцима се као окружење за израду користи &#039;&#039;Eclipse&#039;&#039;, али било које окружење инсталирано у рачунарским лабораторијама на факултету је прихватљиво. Такође је доступан &#039;&#039;&#039;[[Програмски преводиоци 1/Пројекат|водич за израду пројекта]].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Одбрана пројекта се организује неколико дана пре испита. На одбрани се прво раде модификације, затим асистенту или демонстратору покаже да модификација ради и потом брани основни пројекат. Одбрана основног пројекта обично није много детаљна, већ се покрену јавни тестови и види да ли раде (дају добар испис), евентуално откоментаришу неке линије које треба да изазову грешке. Том приликом се ретко тестира опоравак од синтаксних грешки и разне спецификације исписа прописане поставком. У извештај са пројекта се не улази. Структура пројекта која у поставци пише да је неопходна није заправо неопходна. Неке од модификација претходних година доступне су из одељка са [[#Корисне везе|корисним везама]].&lt;br /&gt;
&lt;br /&gt;
Стари пројекти доступни су са странице предмета (године 2021/2022 су доступни на http://ir4pp1.etf.rs/Domaci/2021-2022, претходне године на http://ir4pp1.etf.rs/Domaci/2020-2021 и тако даље, али не постоји лако доступна листа домаћих на једном месту).&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се понекад објављују [http://ir4pp1.etf.bg.ac.rs/Rokovi.html на страници предмета,] и понекад имају решења у виду сликаних вежбанки студената који су освојили максималан број бодова.&lt;br /&gt;
&lt;br /&gt;
Рокови који су решени на викију су:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = Програмски преводиоци 1&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| format      = ,\n* &amp;lt;span class=&amp;quot;rok,&amp;quot;&amp;gt;[[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦25¦-1}²]]&amp;lt;/span&amp;gt;,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
| include     = {nerešeno}.dpl, {delimično rešeno}.dpl, {нерешено}.dpl, {делимично решено}.dpl&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Уколико желите да додате рок, посетите &#039;&#039;&#039;[[Project:Направи#Стандард (латиница)|страницу за прављење рока]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
Постоји једна збирка задатака и један уџбеник из предмета, доступни са странице предмета:&lt;br /&gt;
* &#039;&#039;&#039;[http://ir4pp1.etf.rs/zbirka/ppzbirka.pdf &amp;quot;Збирка задатака из Програмских преводилаца 1&amp;quot;]&#039;&#039;&#039;, Д.Велашевић, Д.Бојић, 2000 издавач: &#039;&#039;Електротехнички факултет Универзитета у Београду&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[http://ir4pp1.etf.rs/Predavanja/pp1_udzbenik.pdf &amp;quot;Програмски преводиоци 1&amp;quot;]&#039;&#039;&#039;, Д.Бојић, М.Вукасовић, 2022 (верзија 0.9)&lt;br /&gt;
На збирку се обично позива из материјала са вежби. Уџбеник опширно покрива градиво са предавања, али како још увек није дошао до стабилне верзије уме имати чудне језичке конструкте (налик онима из првог пасуса овог чланка) који га чине неоптималним за спремање испита.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
=== СИ ===&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума који се одржавају у првој и другој колоквијумској недељи и надокнађују се преко бодова са испита (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; — бодови са пројекта (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-60)&lt;br /&gt;
* Бодови са испита/колоквијума: &amp;lt;math&amp;gt;P_1 = max\left(\frac{1}{3} I + K_1 + K_2, \frac{2}{3} I + K_1, \frac{2}{3} I + K_2, I\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Бодови: &amp;lt;math&amp;gt;P = P_1 + D&amp;lt;/math&amp;gt;&lt;br /&gt;
* Услов: &amp;lt;math&amp;gt;D \geq 20&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P_1 \geq 31&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;!-- Уколико је оцењивање другачије на РТИ, овде направити нови одељак за РТИ испод одељка за СИ. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: да ли дозвољавају да се уместо поништавања оцене на увиду упише оцена 5, који бодови се преносе из једног у други испитни рок --&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 61&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 71&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 81&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 91&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== РТИ ===&lt;br /&gt;
Како на РТИ има само један колоквијум од 30 бодова, коначни бодови се рачунају по формули: &amp;lt;math&amp;gt;P = D + max\left(\frac{1}{2} I + K, I\right)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{задаци|postavke}}&lt;br /&gt;
* {{задаци|rešenja}}&lt;br /&gt;
*: Рокови који су преписани а нису решени су: {{рокови|нерешени}}&lt;br /&gt;
*: Рокови којима недостаје понеко решење су: {{рокови|делимично решени}}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A_2023&amp;diff=8008</id>
		<title>Заштита података/К 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A_2023&amp;diff=8008"/>
		<updated>2025-09-16T19:21:24Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 7. zadatak */ rešenje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Kolokvijum 2023. godine&#039;&#039;&#039; održan je 9. aprila i trajao je 90 minuta. Bilo je dostupno okruženje PyCharm kao i dokumentacija za Python.&lt;br /&gt;
&lt;br /&gt;
== Grupa A ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[9 poena]&#039;&#039;&#039; Isto kao [[#1. zadatak 2|1. zadatak iz druge grupe]], osim što se šifrovalo javnim ključem.&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šifrovanjem u prvom zadatku korišćenjem RSA algoritma se obezbeđuje (netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena):&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Poreklo&lt;br /&gt;
# Poreklo i tajnost&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Tajnost&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; SHA-512 se koristi kao hash funkcija. Posle koliko pokušaja se sa verovatnoćom 0.5 može sprovesti &#039;&#039;strong-collision&#039;&#039;:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;math class=&amp;quot;solution&amp;quot;&amp;gt;2^{256}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{256}-1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{511}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{256-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{511}-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039;Kod kojih od navedenih kriptografskih algoritama učestanost pojavljivanja digrama u šifrovanom tekstu ima istu raspodelu kao učestanost pojavljivanja digrama u originalnom tekstu?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &#039;&#039;Rail-fence&#039;&#039; algoritam&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;Hill&#039;&#039;-ov algoritam 2x2&amp;lt;/span&amp;gt;&lt;br /&gt;
# &#039;&#039;Row transposition&#039;&#039;&lt;br /&gt;
# &#039;&#039;Hill&#039;&#039;-ov algoritam 3x3&lt;br /&gt;
# &#039;&#039;One-time pad&#039;&#039;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&#039;&#039;Playfair&#039;&#039; algoritam&amp;lt;/span&amp;gt;&lt;br /&gt;
# &#039;&#039;Vigenere&#039;&#039; algoritam&lt;br /&gt;
# &#039;&#039;Vigenere&#039;&#039; algoritam sa &#039;&#039;autokey&#039;&#039; poboljšanjem&lt;br /&gt;
# HMAC one time password&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Šta je od navedenog tačno za SAES algoritam?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Prošireni ključ je 32 bita&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Matrice se popunjavaju po kolonama&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Koristi se 16-bitni ključ&amp;lt;/span&amp;gt;&lt;br /&gt;
# Prva operacija algoritma je nibble substituion&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Izaberite tačnu formulu pri generisanju ključa:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;math class=&amp;quot;solution&amp;quot;&amp;gt;w_i = g(w_{i-1}) \oplus w_{i-2}; w_{i+1} = w_i \oplus w_{i-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
# još neke random formule&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[6 poena]&#039;&#039;&#039; Opisivanje &#039;&#039;Meet-in-the-middle&#039;&#039; napada.&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Kako DES algoritam ima veličinu ključa &amp;lt;math&amp;gt;2^{56}&amp;lt;/math&amp;gt;, više se ne smatra sigurnim. Intuitivno, dvostruka primena ovog algoritma sa različitim ključevima bi trebalo da pruži dvostruko bitova sigurnosti, ali zbog &#039;&#039;Meet-in-the-middle&#039;&#039; napada to nije slučaj. Ovaj napad dozvoljava napadaču da prilikom &#039;&#039;known plaintext&#039;&#039; napada prvo šifruje originalni tekst sa &amp;lt;math&amp;gt;2^{56}&amp;lt;/math&amp;gt; različitih ključeva, zatim dešifruje šifrovani tekst sa &amp;lt;math&amp;gt;2^{56}&amp;lt;/math&amp;gt; različitih ključeva, i na taj način dođe do dve liste polu-šifrovanih tekstova u kojima će se jedan par tekstova poklopiti. Na ovaj način napadač može da sazna koji ključevi su iskorišćeni u samo &amp;lt;math&amp;gt;2^{57}&amp;lt;/math&amp;gt; DES operacija.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
: &#039;&#039;Ovaj zadatak nije potpun. Ukoliko se sećate tačnih brojeva, možete ga upotpuniti.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[10 poena]&#039;&#039;&#039; Slično kao [[#8. zadatak 2|8. zadatak iz druge grupe]], ali sa &#039;&#039;rail-fence&#039;&#039; umesto &#039;&#039;row transposition&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Grupa B ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[9 poena]&#039;&#039;&#039; Anđela je poslala Borisu poruku koju je šifrovala RSA algoritmom, svojim privatnim RSA ključem. Dostupni su javni parametri &amp;lt;math&amp;gt;p=271&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;q=???&amp;lt;/math&amp;gt;. Borisov javni ključ je 743, a Anin&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; privatni je 541(?). Poruka je šifrovana tako što su grupisana dva po dva slova prikazana u ASCII formatu i pretvorena u brojeve (na primer: &#039;ABCDEF&#039; je razbijeno u dvoslovne grupe (&#039;AB&#039;, &#039;CD&#039; i &#039;EF&#039;), a onda je svaka grupa pretvorena u brojeve &#039;AB&#039; = &amp;lt;math&amp;gt;256 \cdot 65 + 66 = 16706&amp;lt;/math&amp;gt;, &#039;CD&#039; = &amp;lt;math&amp;gt;256 \cdot 67 + 68 = 17220&amp;lt;/math&amp;gt; i &#039;EF&#039; = &amp;lt;math&amp;gt;256 \cdot 69 + 70 = 17734&amp;lt;/math&amp;gt;). Šifrovana vrednost je prikazana kao grupa od 4 heksadecimalne vrednosti.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;div class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Preporuka je da se termin za izdavanje kvalifikovanog elektronskog sertifikata zakaze preko elektronske usluge portala eUprava.&lt;br /&gt;
&lt;br /&gt;
Preduslov za izdavanje kvalifikovanog elektronskog sertifikata (u daljem tekstu „sertifikat“) korisniku je da korisnik ima vazeci identifikacioni dokument (licnu kartu sa cipom izadatu POSLE 18.08.2014. godine) i da zna svoj korisnicki PIN. Potrebne obrasce za podnosenje zahteva za izdavanje sertifikata korisnik preuzima sa ove stranice.&lt;br /&gt;
&lt;br /&gt;
U slucaju da je korisnik zaboravio svoj PIN, potrebno je da pre podnosenja zahteva za izdavanje sertifikata, podnese zahtev za deblokadom licne karte sa promenom PIN-a.&lt;br /&gt;
&lt;br /&gt;
Korisnik je fizicko lice kome se pruza usluga izdavanja kvalifikovanog elektronskog sertifikata.&lt;br /&gt;
&lt;br /&gt;
Registraciono telo je organizaciona jedinica izdavaoca sertifikata ovlascena za vrsenje poslova registracije korisnika, odnosno organizaciona jedinica MUP-a nadlezna za izdavanje licnih identifikacionih dokumenata.&lt;br /&gt;
&lt;br /&gt;
Aktivacioni podatak je korisnicki PIN, koji korisnik dobija u zasticenoj koverti prilikom preuzimanja licne karte sa cipom.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[0 poena]&#039;&#039;&#039; Predaja koda korišćenog za rešavanje prvog zadatka.&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[3 poena]&#039;&#039;&#039; Šifrovanjem u prvom zadatku korišćenjem RSA algoritma se obezbeđuje (netačan odgovor donosi -1 poen, odgovor ne znam donosi 0 poena):&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Tajnost&lt;br /&gt;
# Poreklo i tajnost&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poreklo&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne znam&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; SHA-512 se koristi kao hash funckija. Posle koliko pokušaja se sa verovatnoćom 0.5 može sprovesti &#039;&#039;weak-collision&#039;&#039;:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{256}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{256}-1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math class=&amp;quot;solution&amp;quot;&amp;gt;2^{511}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{256-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;2^{511}-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Isti zadatak kao i 7. zadatak iz [[Заштита података/Јул 2021#7. zadatak|jula 2021. godine]].&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[4 poena]&#039;&#039;&#039; Šta je od navedenog tačno za SAES algoritam?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# SAES ima tačno dve add-round-key faze&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;SAES radi sa podacima veličine 16b&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poslednja faza SAES ne sadrži mix-columns fazu&amp;lt;/span&amp;gt;&lt;br /&gt;
# SAES poštuje Feistel strukturu&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri dekripciji SAES, koja faze treba da zamene mesta?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# nibble substitution i mix columns&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;nibble substitution i shift row&amp;lt;/span&amp;gt;&lt;br /&gt;
# nibble substitution i add round key&lt;br /&gt;
# mix columns i shift row&lt;br /&gt;
# add round key i shift row&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;mix columns i add round key&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[6 poena]&#039;&#039;&#039; O čemu treba voditi računa pri konstrukciji tokovskih algoritama? Da li dobar tokovski algoritam treba da poseduje osobine difuzije i konfuzije?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Period ponavljanja izlaza generatora pseudoslučajnih brojeva treba da bude što veći. Izlaz generatora pseudoslučajnih brojeva treba što je više moguće da liči na pravi slučajan tok podataka. U idealnom slučaju, broj nula i jedinica u izlazu treba da bude jednak. Ukoliko je izlaz veličine bajta, onda svih 256 mogućih vrednosti treba da se pojavi sa jednakom učestanošću. Ključ treba da bude dovoljno veliki da bi se sprečili brute force napadi (128 bita ili više). Difuzija i konfuzija se odnose na blokovske algoritme i dobar tokovski algoritam ne treba da poseduje te osobine.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
&#039;&#039;&#039;[10 poena]&#039;&#039;&#039; Danijela je zaboravila da prijavi kolokvijume i želi da pošalje drugarici ključ kako bi ih ona umesto nje prijavila. Šifra joj se sastoji od 8 heksadecimalnih cifara (32 bita). Za šifrovanje se koristi &#039;&#039;Row transposition&#039;&#039; algoritam koji radi sa &#039;&#039;&#039;bitovima&#039;&#039;&#039;. Algoritam šifrovanja radi sa 16-bitnim podacima, stoga se koristi OFB mod funkcionisanja. Inicijalna vrednost za OFB je 4567, a ključ za &#039;&#039;Row transposition&#039;&#039; je 3412. Poruka koju je drugarica primila je &#039;&#039;&#039;EFC5378C&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Odgovoriti na sledeća pitanja. Odgovore davati u heksadecimalnom obliku bez oznake.&lt;br /&gt;
# vrednost ulaza u prvi blok algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4567&amp;lt;/span&amp;gt;&lt;br /&gt;
# vrednost izlaza iz prvog bloka algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;350F&amp;lt;/span&amp;gt;&lt;br /&gt;
# vrednost dešifrovanog prvog bloka je &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;DACA&amp;lt;/span&amp;gt;&lt;br /&gt;
# vrednost ulaza u drugi blok algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;350F&amp;lt;/span&amp;gt;&lt;br /&gt;
# konačnu vrednost celokupne šifrovane poruke koju Marko šalje &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;DACAAA99&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A_2022&amp;diff=8007</id>
		<title>Заштита података/К 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%9A_2022&amp;diff=8007"/>
		<updated>2025-09-15T15:33:23Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 9. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Kolokvijum 2022. godine za RTI&#039;&#039;&#039; održan je 16. aprila.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Dešifrovati RSA algoritmom sledeću poruku zapisanu u heksadecimalnom formatu: &#039;&#039;&#039;A9333A105A&#039;&#039;&#039;, ako se zna da su vrednosti &amp;lt;math&amp;gt;p = 11&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;q = 23&amp;lt;/math&amp;gt;, a da su privatni i javni ključ redom: &amp;lt;math&amp;gt;d = 37, e = 113&amp;lt;/math&amp;gt;. Poruka je šifrovana &amp;lt;u&amp;gt;privatnim&amp;lt;/u&amp;gt; RSA ključem bajt po bajt. Dešifrovanu poruku prikazati u formatu ASCII karaktera. &#039;&#039;(Na kolokvijumu je bila data [[wikipedia:ASCII table|ASCII tabela]] koja ovde nije prepisana.)&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Dešifrovana poruka (potrebno je ispravno navesti velika i mala slova): &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;KO10k&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
Poruci koja je šifrovana na ovaj način obezbeđena/o je (netačan odgovor na ovo pitanje nosi -1 poen, odgovor &amp;quot;Ne znam&amp;quot; donosi 0 poena):&lt;br /&gt;
* Tajnost poruke&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poreklo poruke&amp;lt;/span&amp;gt;&lt;br /&gt;
* Ne znam&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Javne vrednosti Diffie-Helman&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; algoritma su: &amp;lt;math&amp;gt;q = 100003, \alpha = 99989&amp;lt;/math&amp;gt;. Branko je odabrao svoju tajnu vrednost &amp;lt;math&amp;gt;X_a = 10002&amp;lt;/math&amp;gt;, a Ana svoju &amp;lt;math&amp;gt;X_b = 9999&amp;lt;/math&amp;gt;. Ključ koji su oboje izračunali je: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;14892&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Na stadionu se nalazi 100.000 posetilaca. Svaki od njih izračuna hash od sledećih podataka: (ime, prezime, datum rođenja, oznaka sedišta i broj po izboru). Hash funkcija koja se koristi je CRC-32 čiji je izlaz dužine 32 bita. Verovatnoća da će dva gledaoca izračunati isti hash je (netačan odgovor donosi -25% poena, ne znam donosi 0 poena):&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# manja od 50%&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;veća od 50%&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ne znam&lt;br /&gt;
# tačno 50%&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Date su tri šeme u kojima se koristi MAC funkcija (označena blokom C na šemi):&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;1000&amp;quot; class=&amp;quot;transparent-svg&amp;quot;&amp;gt;&lt;br /&gt;
  ZP K 2022 zadatak 4 šema A.svg | Šema A&lt;br /&gt;
  ZP K 2022 zadatak 4 šema B.svg | Šema B&lt;br /&gt;
  ZP K 2022 zadatak 4 šema C.svg | Šema C&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Podaci u sve tri šeme idu s leva na desno, kako je naznačeno i strelicama, a koriste se simetrični algoritmi za enkripciju. Koja od ove tri šeme obezbeđuje tajnost poruke M i omogućava minimalno procesiranje na dolaznoj strani potrebno za detekciju neželjene promene poruke koja se prenosi?&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;šema A&amp;lt;/span&amp;gt;&lt;br /&gt;
* šema B&lt;br /&gt;
* šema C&lt;br /&gt;
* šeme A i B podjednako&lt;br /&gt;
* šeme A i C podjednako&lt;br /&gt;
* šeme B i C podjednako&lt;br /&gt;
* sve tri šeme podjednako&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
&lt;br /&gt;
Aleksa i Bojana razmenjuju ključeve trivijalnom šemom Ralfa Merklea. Objasniti zbog čega može da dođe do man-in-the-middle napada na ovu razmenu i na koji način Milica može da izvrši ovaj napad. Detaljno opisati šemu razmene ključeva u slučaju napada koji vrši Milica.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Poruka se ne šalje enkriptovana, svi podaci su dopstupni u paketu, pa zbog toga može doći do MITM napada. Milica može da presretne Aleksinu poruku, njegov javni ključ zameni svojim i izmenjenu poruku pošalje Bojani. Bojana će primiti poruku, zatim će šifrovati Miličinim javnim ključem sesijski ključ i proslediće poruku nazad. Tu poruku opet preseće Milica, dešifruje je svojim privatnim ključem, sesijski ključ šifruje Aleksinim javnim ključem i šalje mu ga. Na ovaj način će Milica moći da komunicira i sa Aleksom i sa Bojanom, tj. moći će da čita i menja poruke koje se šalju između njih.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Koristeći sledeći prošireni alfabet sastavljen od 37 karaktera:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Prošireni alfabet iz šestog zadatka&lt;br /&gt;
! 0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! A  !! B  !! C  !! D  !! E  !! F  !! G  !! H  !! I  !! J&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19&lt;br /&gt;
|-&lt;br /&gt;
! K  !! L  !! M  !! N  !! O  !! P  !! Q  !! R  !! S  !! T  !! U  !! V  !! W  !! X  !! Y  !! Z  !! .&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 21 || 22 || 23 || 24 || 25 || 26 || 27 || 28 || 29 || 30 || 31 || 32 || 33 || 34 || 35 || 36&lt;br /&gt;
|}&lt;br /&gt;
dešifrovati poruku 1KVO3K, znajući matricu ključa koja je korišćena za šifrovanje: &amp;lt;math&amp;gt;\begin{bmatrix}&lt;br /&gt;
11 &amp;amp; 24 \\&lt;br /&gt;
13 &amp;amp; 8&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Determinanta matrice ključa je: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;35&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Multiplikativno invezan element determinante matrice ključa je: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Matrica ključa za dešifrovanje ima sledeće elemente:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Matrica ključa za dešifrovanje iz šestog zadatka&lt;br /&gt;
! k&amp;lt;sub&amp;gt;11&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;&lt;br /&gt;
! k&amp;lt;sub&amp;gt;12&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! k&amp;lt;sub&amp;gt;21&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;25&amp;lt;/span&amp;gt;&lt;br /&gt;
! k&amp;lt;sub&amp;gt;22&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;13&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Dešifrovana poruka je: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;FDWI70&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
&lt;br /&gt;
Goran želi na siguran način da pošalje poruku koju je sastavio. Odabrao je &#039;&#039;Rail Fence&#039;&#039; algoritam u 4 reda za obezbeđivanje tajnosti poruke. Algoritam radi na nivou bita sa podacima veličine 16b. Poruka koja se šalje je veličine 32b. Goran primenjuje CBC mod funkcionisanja. Poruka koja se šifruje je &#039;&#039;&#039;12345678&#039;&#039;&#039;h. Ukoliko mod funkcionisanja zahteva inicijalnu vrednost, koristi se vrednost &#039;&#039;&#039;DCBA&#039;&#039;&#039;h.&lt;br /&gt;
&lt;br /&gt;
Odgovoriti na sledeća pitanja. Odgovore davati u heksadecimalnom obliku bez oznake.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# vrednost ulaza u prvi blok algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;CE8E&amp;lt;/span&amp;gt;&lt;br /&gt;
# vrednost izlaza iz prvog bloka algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;F968&amp;lt;/span&amp;gt;&lt;br /&gt;
# vrednost ulaza u drugi blok algoritma šifrovanja &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;AF10&amp;lt;/span&amp;gt;&lt;br /&gt;
# konačnu vrednost celokupne šifrovane poruke koju Marko šalje &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;F968CEC0&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. zadatak ==&lt;br /&gt;
Na osnovu početnog ključa &#039;&#039;&#039;099D&#039;&#039;&#039;h, generisati sve potrebne ključeve za SAES algoritam. S-Box tabela data je u nastavku. Konstante iteracije su 80h i 30h.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ S-Box tabela iz osmog zadatka.&lt;br /&gt;
!&lt;br /&gt;
! 00b !! 01b !! 10b !! 11b&lt;br /&gt;
|-&lt;br /&gt;
! 00b&lt;br /&gt;
| 9h  || 4h  || Ah  || Bh&lt;br /&gt;
|-&lt;br /&gt;
! 01b&lt;br /&gt;
| Dh  || 1h  || 8h  || 5h&lt;br /&gt;
|-&lt;br /&gt;
! 10b&lt;br /&gt;
| 6h  || 2h  || 0h  || 3h&lt;br /&gt;
|-&lt;br /&gt;
! 11b&lt;br /&gt;
| Ch  || Eh  || Fh  || 7h&lt;br /&gt;
|}&lt;br /&gt;
Navesti vrednost prvog ključa koji se koristi u okviru SAES algoritma (bez sufiksa &#039;&#039;h&#039;&#039;): &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;6BF6&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Navesti vrednost drugog ključa koji se koristi u okviru SAES algoritma (bez sufiksa &#039;&#039;h&#039;&#039;): &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;DC2A&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Navesti vrednost trećeg ključa koji se koristi u okviru SAES algoritma (bez sufiksa &#039;&#039;h&#039;&#039;): &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;-&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ukoliko neki od ključeva ne postoji, staviti znak -&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;K_0 = \mathtt{099D} \implies w_0=\mathtt{09}, w_1=\mathtt{9D}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;RCON(1) = \mathtt{80}, RCON(2) = \mathtt{30} &amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Potključevi u SAES algoritmu generišu se od 8-bitnih komponenti &amp;lt;math&amp;gt;w_{2..5}&amp;lt;/math&amp;gt;. Treći potključ ne postoji.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;w_2 = w_0 \oplus g_1(w_1) = \mathtt{09} \oplus \mathtt{80} \oplus \mathtt{E2} = \mathtt{09} \oplus \mathtt{62} = \mathtt{6B}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;w_3 = w_1 \oplus w_2 = \mathtt{9D} \oplus \mathtt{6B} = \mathtt{F6}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;w_4 = w_2 \oplus g_2(w_3) = \mathtt{6B} \oplus \mathtt{30} \oplus \mathtt{87} = \mathtt{6B} \oplus \mathtt{B7} = \mathtt{DC} &amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;w_5 = w_3 \oplus w_4 = \mathtt{F6} \oplus \mathtt{DC} = \mathtt{2A}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g-funkcija se definiše kao:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;g_i(x) = RCON(i) \oplus Sbox(SwapNibble(x))&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
gde je &amp;lt;math&amp;gt;Sbox&amp;lt;/math&amp;gt; supstitucija po tabeli datoj u zadatku a &amp;lt;math&amp;gt;SwapNibble&amp;lt;/math&amp;gt; rotiranje 8-bitnog broja za 4 bita (okreću se 2 hex cifre).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;K_1 = (w_2, w_3) = \mathtt{6BF6}, K_2 = (w_4, w_5) = \mathtt{9C2A}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. zadatak ==&lt;br /&gt;
Koje od navedenih operacija se koriste u okviru runde Salsa algoritma koje doprinose efikasnosti algoritma?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# OR&lt;br /&gt;
# MUL&lt;br /&gt;
# SUB&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ROTATE SHIFT&amp;lt;/span&amp;gt;&lt;br /&gt;
# LOGICAL SHIFT&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ADD&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objašnjenje:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&lt;br /&gt;
Jedna runda Salsa20 algoritma koristi ARX - Add-Rotate-XOR, od kojih XOR nije ponuđen.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8004</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8004"/>
		<updated>2025-09-15T13:36:57Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: ispravljeno resenje 3.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, па пошто није било података који могу да се споје по обе колоне, десни део дељења је празна табела, због чега се заправо добију само шифре свих радника који су радили на неком од послова (из левог дела израза).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
SELECT R.SifR&lt;br /&gt;
FROM Radnik R&lt;br /&gt;
WHERE NOT EXISTS(&lt;br /&gt;
	SELECT P.SifJ&lt;br /&gt;
    FROM Posao P NATURAL JOIN Projekat Pr&lt;br /&gt;
    WHERE Pr.Naziv = &amp;quot;ЕТФ&amp;quot; AND R.SifR NOT IN(&lt;br /&gt;
    	SELECT A.SifR&lt;br /&gt;
        FROM Angazman A &lt;br /&gt;
        WHERE A.SifJ = P.SifJ&lt;br /&gt;
    )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7996</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7996"/>
		<updated>2025-09-13T11:18:35Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, па пошто није било података који могу да се споје по обе колоне, десни део дељења је празна табела, због чега се заправо добију само шифре свих радника који су радили на неком од послова (из левог дела израза).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv=&#039;ETF&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7991</id>
		<title>Базе Података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%9F%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7991"/>
		<updated>2025-09-13T10:34:53Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: DjoleRkc преместио је страницу Базе Података 2/К1 Септембар-1 2025 на Базе података 2/К1 Септембар-1 2025&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Преусмери [[Базе података 2/К1 Септембар-1 2025]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7990</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7990"/>
		<updated>2025-09-13T10:34:53Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: DjoleRkc преместио је страницу Базе Података 2/К1 Септембар-1 2025 на Базе података 2/К1 Септембар-1 2025&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је вероватно била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, због чега се заправо добију шифре свих радника који су радили на неком од послова пројекта &amp;quot;ЕТФ&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv=&#039;ETF&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7989</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7989"/>
		<updated>2025-09-13T10:28:25Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обиласку је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је вероватно била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, због чега се заправо добију шифре свих радника који су радили на неком од послова пројекта &amp;quot;ЕТФ&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv=&#039;ETF&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7988</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7988"/>
		<updated>2025-09-13T10:26:40Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обилаксу је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је вероватно била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, због чега се заправо добију шифре свих радника који су радили на неком од послова пројекта &amp;quot;ЕТФ&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv=&#039;ETF&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7987</id>
		<title>Базе података 2/К1 Септембар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A1_%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80-1_2025&amp;diff=7987"/>
		<updated>2025-09-13T10:26:23Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: Нова страница: {{tocright}} &amp;#039;&amp;#039;&amp;#039;Први колоквијум у року септембар-1 2025. године&amp;#039;&amp;#039;&amp;#039; је одржан 13. септембра 2025. године. и трајао је сат времена.  == Поставка == Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери. У систему се…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Први колоквијум у року септембар-1 2025. године&#039;&#039;&#039; је одржан 13. септембра 2025. године. и трајао је сат времена.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Компанија уговара пројекте израде софтвера по наруџбинама клијента. У компанији су запослени програмери и менаџери.&lt;br /&gt;
У систему се води евиденција о сваком кораку рада (захтевима, развијеном коду, додели посла). За сваки пројекат неког клијента евидентирају се датум креирања, менаџер, као и сви кориснички захтеви. Пре него што пројекат почне он мора бити испланиран (статус I). Имплементација може почети тек након што се пројекат имплементира. Током имплементације, целокупан код који програмери развију се такође евидентира у систему и то тако што се за сваки код евидентира које корисничке захтеве имплементира. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шема базе:&lt;br /&gt;
&lt;br /&gt;
 Klijent (&amp;lt;u&amp;gt;SifК&amp;lt;/u&amp;gt;, Naziv, Kontakt)&lt;br /&gt;
 Radnik (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Ime)&lt;br /&gt;
 Menadzer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Iskustvo)&lt;br /&gt;
 Programer (&amp;lt;u&amp;gt;SifR&amp;lt;/u&amp;gt;, Specijalnost)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;SifP&amp;lt;/u&amp;gt;, Naziv, Status, Vrednost, DatumPocetka, BrojProgramera, MaksProgramera, SifK, SifR)&lt;br /&gt;
 Zahtev (&amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;, Opis, SiP)&lt;br /&gt;
 Posao (&amp;lt;u&amp;gt;SifJ&amp;lt;/u&amp;gt;, DatumPocetka, DatumKraja, BrPlaniranihProgramera, SifP, SifZ)&lt;br /&gt;
 Angazman (&amp;lt;u&amp;gt;SifA&amp;lt;/u&amp;gt;, SifR, SifJ)&lt;br /&gt;
 Kod (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, Kod)&lt;br /&gt;
 Implementira (&amp;lt;u&amp;gt;SifK&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;SifZ&amp;lt;/u&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Статус: K, I, Z - креиран, испланиран, завршен.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре менаџера који су били надлежни за неки завршен пројекат вредности веће од 10000, а који нису надлежни ни за један тренутни пројекат вредности мање од 10000. &amp;lt;ref&amp;gt;При обилаксу је речено да се термин тренутни односи на пројекте који нису завршени.&amp;lt;/ref&amp;gt;&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{Preko10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;gt; 10000 \land \texttt{Status}=&#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Ispod10000} &amp;amp;= &lt;br /&gt;
  \Pi_{\texttt{SifR}}&lt;br /&gt;
  \bigl(&lt;br /&gt;
    \sigma_{\texttt{Vrednost} &amp;lt; 10000 \land \texttt{Status}\neq &#039;Z&#039;}&lt;br /&gt;
    (\texttt{Projekat})&lt;br /&gt;
  \bigr)\\[4pt]&lt;br /&gt;
\text{Preko10000} &amp;amp;- \text{Ispod10000}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
Написати исказ релационе алгебре који даје шифре парова послова који су на истом пројекту и који имају исти датум краја.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење писано у формату за [https://dbis-uibk.github.io/relax/calc/local/uibk/local/0 RelaX алат].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{P1.SifP},\;\texttt{P2.SifP}}&lt;br /&gt;
\Bigl(&lt;br /&gt;
   \rho_{\texttt{P1}}(\texttt{Posao})&lt;br /&gt;
   \;\bowtie_{\texttt{P1.DatumKraja} = \texttt{P2.DatumKraja} \land&lt;br /&gt;
             \texttt{P1.SifP} = \texttt{P2.SifP} \land&lt;br /&gt;
             \texttt{P1.SifJ} \neq \texttt{P2.SifJ}}&lt;br /&gt;
   \rho_{\texttt{P2}}(\texttt{Posao})&lt;br /&gt;
\Bigr)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
За дати исказ релационе алгебре дати еквивалентат SQL упит: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Pi_{\texttt{SifR},\;\texttt{SifJ}}(\texttt{Angazman})&lt;br /&gt;
\; \div \;&lt;br /&gt;
\Pi_{\texttt{SifJ}}&lt;br /&gt;
\bigl(&lt;br /&gt;
    \sigma_{\texttt{Naziv}=&#039;ETF&#039;}(\texttt{Projekat})&lt;br /&gt;
    \;\bowtie\;&lt;br /&gt;
    \texttt{Posao}&lt;br /&gt;
\bigl)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У овом задатку је вероватно била идеја да се дохвате шифре радника који су радили на свим пословима пројекта &amp;quot;ЕТФ&amp;quot;, али је грешком дато исто име пољима за датум почетка у табели Пројекат и табели Посао, па је Natural Join спојио по две колоне, због чега се заправо добију шифре свих радника који су радили на неком од послова пројекта &amp;quot;ЕТФ&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT SifR FROM Angazman WHERE SifJ IN (SELECT SifJ FROM Posao WHERE SifP IN (SELECT SifP FROM Projekat WHERE Naziv=&#039;ETF&#039;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=7985</id>
		<title>Заштита података/Август 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%97%D0%B0%D1%88%D1%82%D0%B8%D1%82%D0%B0_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0/%D0%90%D0%B2%D0%B3%D1%83%D1%81%D1%82_2021&amp;diff=7985"/>
		<updated>2025-09-09T14:49:29Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 2. zadatak */ M=C^d mod n, C=101, d=5, n=437. Kao rezultat ove operacije se dobije 100 a ne 416&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Avgustovski rok 2021. godine&#039;&#039;&#039; na održan je 26. avgusta i trajao je dva sata.&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
Ana je kreirala poruku &#039;&#039;M&#039;&#039; koju je poslala Branku dva puta.&lt;br /&gt;
&lt;br /&gt;
Uz poruku je poslala El Gamalov digitalni potpis. Prvi put je vrednost digitalnog potpisa bila: (&amp;lt;math&amp;gt;S_1=3357, S_2=3376&amp;lt;/math&amp;gt;), a drugi put (&amp;lt;math&amp;gt;S_1=486, S_2=751&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Branko je izračunao hash dobijene poruke &#039;&#039;M&#039;&#039;. Prvi put je dobio vrednost &amp;lt;math&amp;gt;m=3333&amp;lt;/math&amp;gt;. Javni elementi digitalnog potpisa su &amp;lt;math&amp;gt;q=4001&amp;lt;/math&amp;gt; i njegov primitivni koren &amp;lt;math&amp;gt;\alpha = 3998&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Anin javni ključ &amp;lt;math&amp;gt;Y_a&amp;lt;/math&amp;gt; je 1304. Provera El Gamalovog digitalnog potpisa se obavlja korišćenjem sledećih operacija:&lt;br /&gt;
* &amp;lt;math&amp;gt;V_1 = \alpha^m mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;V_2 = (Y_a)^{S_1}(S_1)^{S_2} mod\ q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za prvi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Vrednost &amp;lt;math&amp;gt;V_2&amp;lt;/math&amp;gt; za drugi digitalni potpis: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;1995&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na osnovu vrednosti &amp;lt;math&amp;gt;V_1&amp;lt;/math&amp;gt; i izračunatih vrednosti u tačkama a) i b), Branko može da zaključi:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa i oba puta ju je potpisala Ana.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Oba digitalna potpisa su ispravna, poruka &#039;&#039;M&#039;&#039; u oba slučaja nije menjana tokom prenosa, ali samo jednom ju je potpisala Ana.&lt;br /&gt;
* Oba digitalna potpisa su ispravna, ali je poruka &#039;&#039;M&#039;&#039; u drugom slučaju promenjena tokom prenosa ili je tada nije potpisala Ana.&lt;br /&gt;
* Samo prvi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, ali je poruka promenjena između dva potpisivanja.&lt;br /&gt;
* Samo drugi digitalni potpis je ispravan i tada je poruku &#039;&#039;M&#039;&#039; potpisala Ana, a prilikom prvog prenosa poruka ili prvi digitalni potpis su izmenjeni.&lt;br /&gt;
* Nijedan digitalni potpis nije ispravan i ne može se utvrditi da li je Ana potpisala poruku &#039;&#039;M&#039;&#039;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
Ana je šifrovala svoju poruku RSA algoritmom koristeći svoj privatni ključ (&amp;lt;math&amp;gt;n=437, e=317&amp;lt;/math&amp;gt;). Vrednost šifrovane poruke je &amp;lt;math&amp;gt;C=101&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
(Pomoć: pretragu inverznog elementa krenuti od najmanjih vrednosti nepoznate)&lt;br /&gt;
&lt;br /&gt;
Odrediti:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti Anin privatni ključ &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Odrediti vrednost originalne poruke M: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;100&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Na ovaj način šifrovane poruke &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt; ima obezbeđeno:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Poreklo poruke M&amp;lt;/span&amp;gt;&lt;br /&gt;
* Poverljivost poruke M&lt;br /&gt;
* I poreklo i poverljivost poruke M&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
Na slici je dat deo SAML odgovora koji Identity provider šalje Service provideru kroz browser korisnika. U okviru odgovora se nalaze message digest, digitalni potpis i digitalni sertifikat Identity providera. Objasniti čemu služe elementi SAML odgovora i na koji način će ih Service provider koristiti za proveru odgovora.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;samlp:Response xmlns:samlp=&amp;quot;urn:oasis:names:tc:SAML:2.0:protocol&amp;quot;&lt;br /&gt;
                xmlns:saml=&amp;quot;urn:oasis:names:tc:SAML:2.0:assertion&amp;quot;&lt;br /&gt;
                ID=&amp;quot;...&amp;quot;&lt;br /&gt;
                Version=&amp;quot;2.0&amp;quot;&lt;br /&gt;
                IssueInstant=&amp;quot;...&amp;quot;&lt;br /&gt;
                Destination=&amp;quot;https://filesender.amres.ac.rs/simplesamlphp/module.php/saml/sp/saml2-acs.php/default-sp&amp;quot;&lt;br /&gt;
                InResponseTo=&amp;quot;...&amp;quot;&lt;br /&gt;
                &amp;gt;&lt;br /&gt;
    &amp;lt;saml:Issuer&amp;gt;https://login.iamres.amres.ac.rs/simplesaml/saml2/idp/metadata.php&amp;lt;/saml:Issuer&amp;gt;&lt;br /&gt;
    &amp;lt;ds:Signature xmlns:ds=&amp;quot;http://www.w3.org/2000/09/xmldsig#&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignedInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:CanonicalizationMethod Algoritm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:SignatureMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ds:Reference URI=&amp;quot;...&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ds:Transforms&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#enveloped-signature&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:Transform Algorithm=&amp;quot;http://www.w3.org/2001/10/xml-exc-c14n#&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/ds:Transforms&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestMethod Algorithm=&amp;quot;http://www.w3.org/2000/09/xmldsig#sha1&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;ds:DigestValue&amp;gt;...&amp;lt;/ds:DigestValue&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:Reference&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:SignedInfo&amp;gt;&lt;br /&gt;
        &amp;lt;ds:SignatureValue&amp;gt;...&amp;lt;/ds:SignatureValue&amp;gt;&lt;br /&gt;
        &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
            &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
            &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
        &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Kako bi pružalac usluge mogao da veruje odgovoru od pružaoca identiteta koji sadrži rezultat autentikacije, pružalac identiteta taj odgovor potpisuje i u njega prilaže svoj sertifikat kako bi pružalac usluge taj potpis mogao da verifikuje. Pružalac usluge će zato pročitati digitalni sertifikat pružaoca identiteta, verifikovati ga, izračunati heš nad pridruženim SAML podacima, dekriptovati potpis javnim ključem pružaoca identiteta (datog u sertifikatu) i uporediti sa hešom. Ukoliko se sve slaže, ta poruka zaista potiče od tog pružaoca identiteta i nije izmenjena od strane korisnika niti bilo koga drugog.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
Objasniti razliku između računske i bezuslovne sigurnosti kriptografskih algoritama. Dati primer algoritma koji pruža bezuslovnu sigurnost. Šta je potrebno da bi se ovakav algoritam realizovao?&lt;br /&gt;
&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;plain&amp;quot;&amp;gt;Računska sigurnost kriptografskog algoritma znači da se njegova šifra ne može razbiti za vreme dok je šifrovana poruka još uvek relevantna (ukoliko je, na primer, potrebno preko 100 godina da se dešifruje tekst šifrovan nekim kriptografskim algoritmom bez prethodnog posedovanja ključa, i poruka koja je njime šifrovana neće biti relevantna nakon 100 godina, smatra se da je taj kriptografski algoritam računski siguran). Bezuslovna sigurnost kriptografskog algoritma znači da se tekst šifrovan njime ne može dešifrovati, bez obzira na vreme dato za dešifrovanje, bez posedovanja ključa kojim je taj tekst šifrovan. Primer ovakog algoritma je &#039;&#039;One-time pad&#039;&#039;, koji to postiže tako što se ista poruka može dešifrovati na različite načine u zavisnosti od ključa, i napadač ne može biti siguran koja od tih dešifrovanih poruka je tačna.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
MAC algoritam koji daje MAC kod veličine 32 bita ima ključ veličine 120 bita. Ako je rasporedla MAC kodova koji daje algoritam uniformna i sve vrednosti su jednako verovatne, da bi otkrio ključ koji se koristi za generisanje MAC kodova napadaču će trebati:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt; različita para/različitih parova (poruka, MAC(poruka))&lt;br /&gt;
# da izvrši &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;2^120+2^88+2^56+2^24&amp;lt;/span&amp;gt; MAC operacija (za prikaz operacije stepenovanja koristiti simbol ^)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
Na slici je prikazan skup paketa koji su zabeleženi tokom jedne razmene ključeva IKE protokolom u kom se koristi unapred podeljeni ključ za proveru identiteta. Prva kolona predstavlja redni broj paketa, druga vreme kada je paket došao, treća i četvrta IP adrese krajeva IPsec sigurnosne asocijacije, a preostale dve opis poruke.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Skup paketa iz šestog zadatka.&lt;br /&gt;
| 16 || 41.000846 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 190 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 41.055118 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 410 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 41.182527 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 20 || 41.091614 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 150 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 21 || 41.196514 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 118 || Identity Protection (Main Mode)&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 41.202733 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 23 || 41.226871 || 192.168.34.4 || 192.168.23.2 || ISAKMP || 230 || Quick Mode&lt;br /&gt;
|-&lt;br /&gt;
| 24 || 41.232999 || 192.168.23.2 || 192.168.34.4 || ISAKMP || 102 || Quick Mode&lt;br /&gt;
|}&lt;br /&gt;
U sledećim paketima se nalaze ključevi od kojih će se generisati sesijski ključ za enkripciju u okviru ESP:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# 24&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;22&amp;lt;/span&amp;gt;&lt;br /&gt;
# 20&lt;br /&gt;
# 17&lt;br /&gt;
# 18&lt;br /&gt;
# 21&lt;br /&gt;
# 16&lt;br /&gt;
# 19&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;23&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. zadatak ==&lt;br /&gt;
Poređati sledeće simetrične algoritme enkripcije po kvalitetu od najkvalitetnijeg ka najlošijem:&lt;br /&gt;
* A — Cezarov algoritam,&lt;br /&gt;
* B — slučajna polialfabetska šifra,&lt;br /&gt;
* C — Vigenere algoritam sa autokey poboljšanjem,&lt;br /&gt;
* D — Playfair algoritam.&lt;br /&gt;
Kvalitet algoritma je određen time koliko se u šifrovanom tekstu razlikuje statistička struktura šifrovanog teksta u odnosu na originalni. Što je razlika veća, algoritam je kvalitetniji. Odgovor upisati u polje u formi (X-Y-Z-W) gde slovo označava određeni algoritam (crtice između slova su &#039;&#039;&#039;obavezne&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odgovor:&#039;&#039;&#039; &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;B-C-D-A&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Заштита података]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=7952</id>
		<title>Програмски преводиоци 1/Фебруар 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=7952"/>
		<updated>2025-08-21T10:17:06Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */ Ispravka netacnog resenja&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u februarskom roku 2021. godine&#039;&#039;&#039; održan je 12. februara. Postavka roka je dostupna [http://ir4pp1.etf.rs/Rokovi/2020-2021/pp1-2021-februar-ispit.pdf sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sekvenca od nula ili više promenljivih razdvojenih zarezima. Svaka promenljiva predstavlja niz od jednog ili više znakova, počinje obavezno malim slovom, nakon čega može doći prozvoljan broj znakova iz skupa koji čine mala slova, cifre i specijalni karakter &amp;quot;_&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napisati regularni izraz koji opisuje navedenu sekvencu.&lt;br /&gt;
# Na osnovu regularnog izraza pod a) formirati minimalni DKA korišćenjem metoda pozicije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 1 stablo.svg|thumb|Sintaksno stablo u prvom zadatku.]]&lt;br /&gt;
Regularni izraz koji prepoznaje ovu sekvencu može biti &amp;lt;code&amp;gt;(mo*(,mo*)*|)&amp;lt;/code&amp;gt;, gde je &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; oznaka za malo slovo a &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; oznaka za mala slova, velika slova i donju crtu.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
! 1&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Pretvaranje nedeterminističkog konačnog automata u deterministički&lt;br /&gt;
!         !! m       !! o       !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → 1, 6  || 2, 3, 6 ||         ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2, 3, 6 ||         || 2, 3, 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4       || 3, 5, 6 ||         ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| 3, 5, 6 ||         || 3, 5, 6 || 4 || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!     !! m !! o !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A || B ||   ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| B   ||   || B || C || 1&lt;br /&gt;
|-&lt;br /&gt;
| C   || D ||   ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| D   ||   || D || C || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za datu gramatiku&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → ε&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;&lt;br /&gt;
# &amp;amp;lt;B&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;C&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;D&amp;gt; → ε&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LR(0) automata i vrstu ∇ kontrolne tabele SLR(1) parsera. Ima li konflikata?&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LALR(1) automata i vrstu ∇ kontrolne tabele LALR(1) parsera. Ima li konflikata?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Napomena: ne crtati ostatak karakterističnog automata, niti ostatak kontrolne tabele.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Stanje ∇ sadrži u sebi sledeće smene:&lt;br /&gt;
* &amp;amp;lt;S&#039;&amp;gt; → • &amp;amp;lt;S&amp;gt; ─┤, {}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → • &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;, {─┤}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → •, {─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;B&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {b}&lt;br /&gt;
* &amp;amp;lt;C&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {c}&lt;br /&gt;
Kako bismo odredili ∇ vrstu kontrolne tabele SLR(1) parsera, moramo odrediti i relevantne FIRST i FOLLOW skupove:&lt;br /&gt;
* FOLLOW(&amp;amp;lt;C&amp;gt;) = {c}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤}&lt;br /&gt;
* FIRST(&amp;amp;lt;S&amp;gt;) = FIRST(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;B&amp;gt;) ∪ FIRST(&amp;amp;lt;C&amp;gt;) = {a}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;S&amp;gt;) ∪ FOLLOW(&amp;amp;lt;S&amp;gt;) = {a, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;B&amp;gt;) = FOLLOW(&amp;amp;lt;A&amp;gt;) ∪ {b, c} = {a, b, c, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;D&amp;gt;) = FOLLOW(&amp;amp;lt;C&amp;gt;) ∪ FOLLOW(&amp;amp;lt;B&amp;gt;) = {a, b, c, ─┤}&lt;br /&gt;
Odavde možemo videti da se u &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; koloni nalazi SHIFT, a u ─┤ koloni REDUCE(2). Kontrolna tabela bi trebalo da je ista za oba parsera.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → a &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; b&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → c &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → d&lt;br /&gt;
&lt;br /&gt;
Na ulaz LR(0) parsera koji je opisan datom gramatikom dovedi se ulazna sekvenca &amp;lt;code&amp;gt;accbcadb&amp;lt;/code&amp;gt;. Pretpostavka je da se za oporavak od grešaka koristi jednostavan panic mode algoritam:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# sa sigurnim simbolom c.&lt;br /&gt;
# sa sigurnim simbolom d.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Za tačku a) i b) zasebno prikazati rad parsera i jasno naznačiti da li je parser uspešno završio parsiranje.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Kontrolna tabela LR(0) parsera&lt;br /&gt;
! Stanje             !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt; || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ─┤&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;      || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
| a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;      || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;      || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
a)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom c&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 1&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cadb─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || adb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || ─┤ || PANIC: POP 4&lt;br /&gt;
|-&lt;br /&gt;
| ∇  || ─┤ || REJECT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser nije uspešno završio parsiranje, tj. sekvence se odbija.&lt;br /&gt;
&lt;br /&gt;
b)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom d&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || db─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || b─┤ || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;  || b─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;b&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ─┤ || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; S &amp;gt;&amp;lt;sub&amp;gt;01&amp;lt;/sub&amp;gt;  || ─┤ || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser je uspešno završio parsiranje, tj. sekvence se prihvata.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Kompajler za mikrojavu na izlazu daje sledeći ispis tabele simbola i listing bajtkoda. Kako izgleda izvorni mikrojava program koji odgovara ovim izlazima?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==================SADRŽAJ TABELE SIMBOLA=======================&lt;br /&gt;
(Level -1)&lt;br /&gt;
Type int: int, 0, 0&lt;br /&gt;
Type char: char, 0, 0&lt;br /&gt;
Con eol: char, 10, 0&lt;br /&gt;
Con null: Class, 0, 0&lt;br /&gt;
Meth chr: char, 0, 1 [Var i: int, 0, 1 ]&lt;br /&gt;
Meth ord: int, 0, 1 [Var ch: char, 0, 1 ]&lt;br /&gt;
Meth len: int, 0, 1 [Var arr: Arr of notype, 0, 1 ]&lt;br /&gt;
Prog PROBA: notype, 0, 0&lt;br /&gt;
[Type SUPERKLASA: Class, 0, 0 [Fld s: int, 1, 1 ][Meth foo: int, 0, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Type POTKLASA: Class, 6, 0 [Fld s: int, 1, 1 ][Fld p: int, 2, 1 ][Meth foo: int, 9, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Var sk: Class, 12, 0 ]&lt;br /&gt;
[Meth main: notype, 19, 0 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mikrojava bajkod:&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: enter 1 1&lt;br /&gt;
3: const_0&lt;br /&gt;
4: jmp 3 (=7)&lt;br /&gt;
7: exit&lt;br /&gt;
8: return&lt;br /&gt;
9: enter 1 1&lt;br /&gt;
12: const_1&lt;br /&gt;
13: neg&lt;br /&gt;
14: jmp 3 (=17)&lt;br /&gt;
17: exit&lt;br /&gt;
18: return&lt;br /&gt;
19: enter 0 0&lt;br /&gt;
22: const 102&lt;br /&gt;
27: putstatic 0&lt;br /&gt;
30: const 111&lt;br /&gt;
35: putstatic 1&lt;br /&gt;
38: const 111&lt;br /&gt;
43: putstatic 2&lt;br /&gt;
46: const_m1&lt;br /&gt;
47: putstatic 3&lt;br /&gt;
50: const 0&lt;br /&gt;
55: putstatic 4&lt;br /&gt;
58: const -2&lt;br /&gt;
63: putstatic 5&lt;br /&gt;
66: const 102&lt;br /&gt;
71: putstatic 6&lt;br /&gt;
74: const 111&lt;br /&gt;
79: putstatic 7&lt;br /&gt;
82: const 111&lt;br /&gt;
87: putstatic 8&lt;br /&gt;
90: const_m1&lt;br /&gt;
91: putstatic 9&lt;br /&gt;
94: const 9&lt;br /&gt;
99: putstatic 10&lt;br /&gt;
102: const -2&lt;br /&gt;
107: putstatic 11&lt;br /&gt;
110: new 12&lt;br /&gt;
113: dup&lt;br /&gt;
114: const 6&lt;br /&gt;
119: putfield 0&lt;br /&gt;
122: putstatic 12&lt;br /&gt;
125: getstatic 12&lt;br /&gt;
128: const_1&lt;br /&gt;
129: putfield 1&lt;br /&gt;
132: getstatic 12&lt;br /&gt;
135: dup&lt;br /&gt;
136: getfield 0&lt;br /&gt;
139: invokevirtual foo&lt;br /&gt;
156: const_0&lt;br /&gt;
157: print&lt;br /&gt;
158: exit&lt;br /&gt;
159: return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Iz gorenavedene tabele simbola ne može se zaključiti da li je &amp;lt;code&amp;gt;sk&amp;lt;/code&amp;gt; promenljiva tipa &amp;lt;code&amp;gt;SUPERKLASA&amp;lt;/code&amp;gt; ili &amp;lt;code&amp;gt;POTKLASA&amp;lt;/code&amp;gt;, pa se zaključuje na osnovu njenog imena.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
program PROBA&lt;br /&gt;
    class SUPERKLASA {&lt;br /&gt;
        int s;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class POTKLASA extends SUPERKLASA {&lt;br /&gt;
        int p;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return -1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    SUPERKLASA sk;&lt;br /&gt;
    {&lt;br /&gt;
        void main() {&lt;br /&gt;
            sk = new POTKLASA();&lt;br /&gt;
            sk.s = 1;&lt;br /&gt;
            print(sk.foo(), 0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati programski fragment napisati odgovarajući međukod u SSA formi i nacrtati graf toka kontrole na nivou osnovnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
x = 0;&lt;br /&gt;
y = 1;&lt;br /&gt;
z = 2;&lt;br /&gt;
do {&lt;br /&gt;
    x = x - 1;&lt;br /&gt;
&lt;br /&gt;
    if (z == 0) break;&lt;br /&gt;
    else y = y + z;&lt;br /&gt;
&lt;br /&gt;
    z = y + 1;&lt;br /&gt;
} while (z &amp;gt; 1 &amp;amp;&amp;amp; x == 0);&lt;br /&gt;
x = z - y;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 5 graf.svg|thumb|Graf toka kontrole u petom zadatku.]]&lt;br /&gt;
# x1 := 0&lt;br /&gt;
# y1 := 1&lt;br /&gt;
# z1 := 2&lt;br /&gt;
# t1 := Ф(x1, x2)&lt;br /&gt;
# t2 := t1 - 1&lt;br /&gt;
# x2 := t2&lt;br /&gt;
# t3 := Ф(z1, z2)&lt;br /&gt;
# if t3 == 0 goto 17&lt;br /&gt;
# t4 := Ф(y1, y2)&lt;br /&gt;
# t5 := Ф(z1, z2)&lt;br /&gt;
# t6 := t4 + t5&lt;br /&gt;
# y2 := t6&lt;br /&gt;
# t7 := y2 + 1&lt;br /&gt;
# z2 := t7&lt;br /&gt;
# if z2 &amp;lt;= 1 goto 17&lt;br /&gt;
# if x2 == 0 goto 4&lt;br /&gt;
# t8 := Ф(y1, y2)&lt;br /&gt;
# t9 := Ф(z1, z2)&lt;br /&gt;
# t10 := t9 - t8&lt;br /&gt;
# x3 := t10&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2023&amp;diff=7951</id>
		<title>Програмски преводиоци 1/Јануар 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2023&amp;diff=7951"/>
		<updated>2025-08-20T17:49:26Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&#039;&#039;&#039;Januarski ispit 2023. godine&#039;&#039;&#039; održan je 19. januara. Postavka roka nije dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je sledeći program:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int main() {&lt;br /&gt;
    int count;&lt;br /&gt;
    void procX() {&lt;br /&gt;
        void report() {&lt;br /&gt;
            writeln(&amp;quot;count = &amp;quot; + count);&lt;br /&gt;
        }&lt;br /&gt;
        void proxY() {&lt;br /&gt;
            int count;&lt;br /&gt;
            count = 200;&lt;br /&gt;
            report();&lt;br /&gt;
        }&lt;br /&gt;
        count = 100;&lt;br /&gt;
        report();&lt;br /&gt;
        procY();&lt;br /&gt;
    }&lt;br /&gt;
    count = 300;&lt;br /&gt;
    procX();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Ukoliko se koristi statičko razrešavanje dosega, šta će ispisati dati program?&lt;br /&gt;
# Ukoliko se koristi dinamičko razrešavanje dosega, šta će ispisati dati program?&lt;br /&gt;
# Ukoliko se za nelokalne promenljive koriste displeji, nacrtati poslednje stanje steka i displeja nakon što je &amp;lt;code&amp;gt;report&amp;lt;/code&amp;gt; funkcija pozvana poslednji put.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
a) Ispis: &amp;lt;br&amp;gt;&lt;br /&gt;
count = 100 &amp;lt;br&amp;gt;&lt;br /&gt;
count = 100 &amp;lt;br&amp;gt;&lt;br /&gt;
Objasnjenje: Statičko razrešavanje znači da veza između imena promenljive i deklaracije se pravi u vreme prevođenja (kompajliranja).&lt;br /&gt;
Dakle, kada se report kompajlira, kompajler već odluči: &amp;quot;ovo count u report se odnosi na count iz procX&amp;quot;, jer je to najbliži leksički obuhvatajući opseg.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
b) Ispis: &amp;lt;br&amp;gt;&lt;br /&gt;
count = 100 &amp;lt;br&amp;gt;&lt;br /&gt;
count = 200 &amp;lt;br&amp;gt;&lt;br /&gt;
Objasnjenje: Kod dinamičkog razrešavanja, nelokalna promenljiva se traži preko lanca aktivacionih zapisa na steku, počev od najbližeg pozivaoca.&lt;br /&gt;
c)&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je isečak koda klase &amp;lt;code&amp;gt;Struct&amp;lt;/code&amp;gt;. Dopuniti metodu &amp;lt;code&amp;gt;AssignableTo&amp;lt;/code&amp;gt; kodom koji fali.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Struct {&lt;br /&gt;
    private int kind;&lt;br /&gt;
    private Struct elemType;&lt;br /&gt;
    public boolean Equals(Struct other) {&lt;br /&gt;
        return (this == other) || (kind == Kinds.Array &amp;amp;&amp;amp; other.kind == Kinds.Array &amp;amp;&amp;amp; elemType.Equals(other.ElemType));&lt;br /&gt;
    }&lt;br /&gt;
    public boolean IsRefType() {&lt;br /&gt;
        return kind == Kinds.Class || kind == Kinds.Array;&lt;br /&gt;
    }&lt;br /&gt;
    public boolean AssignableTo(Struct dest) {&lt;br /&gt;
        if (this.Equals(dest) || &lt;br /&gt;
                || (kind == Kinds.Array &amp;amp;&amp;amp; dest.kind == Kinds.Array &amp;amp;&amp;amp; dest.elemType == Tab.noType)) {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Preuzeto iz [http://ir4pp1.etf.rs/Predavanja/pp1_udzbenik.pdf udžbenika Programski prevodioci 1] (Dragan Bojić, Maja Vukasović) sa strane 209.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Struct {&lt;br /&gt;
    ...&lt;br /&gt;
    // checks, if this can be assigned to dest (explicit. assignment, parameters)&lt;br /&gt;
    public bool AssignableTo (Struct dest) {&lt;br /&gt;
        if ( this.Equals(dest) || this == Tab.nullType &amp;amp;&amp;amp; dest.IsRefType() ||&lt;br /&gt;
            kind == Kinds.Arr &amp;amp;&amp;amp; dest.kind == Kinds.Arr &amp;amp;&amp;amp; // for len()&lt;br /&gt;
            dest.elemType == Tab.noType) return true;&lt;br /&gt;
        for (Struct s = elemType; s != null; s = s.elemType) {&lt;br /&gt;
            if (s.equals(dest)) return true;&lt;br /&gt;
        }&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati blok koda napisati međukod a zatim nacrtati graf toka kontrole sa međukodom u SSA formi.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int res = 10;&lt;br /&gt;
for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;
    int n = res;&lt;br /&gt;
    for (int j = i + 1; j &amp;lt; n; j++) {&lt;br /&gt;
        if ((i + j) % 2 == 0) {&lt;br /&gt;
           res++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za datu gramatiku konstruisati karakteristički LR(0) automat i kontrolnu tabelu, a zatim dodati LALR(1) predikcione skupove.&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;A&amp;gt; a &amp;amp;lt;A&amp;gt; b&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;S&amp;gt; a&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → c&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Ova postavka zadatka je gotovo sigurno pogrešna, jer se u stanju praznog steka kod LR(0) parsera ne može preći ni u jedno drugo stanje, a ne može ni da se uradi Reduce. Takođe, nejasno je kakve ulazne sekvence prihvata/odbija ovakva gramatika jer se one ne mogu ni generisati zbog toga što jedina smena za startni neterminal &amp;lt; S &amp;gt; sadrži levu rekurziju, pa je tako jedina moguća sekvenca ona u kojoj se &amp;lt; S &amp;gt; neprestano dodaje na početak.&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
U datoj gramatici neterminalu &amp;lt;code&amp;gt;&amp;amp;lt;list&amp;gt;&amp;lt;/code&amp;gt; dodati sintetizovani atribut koji naizmenično sadrži cifre najvećih i najmanjih brojeva iz niza. Na primer, ukoliko je sekvenca koja se prepoznaje [1, 2, 3] [4, 5, 6] [7, 8, 9], taj atribut bi imao vrednost 349. Smatrati da terminal &amp;lt;code&amp;gt;INT&amp;lt;/code&amp;gt; ima sintetizovani simbol sa svojom vrednošću.&lt;br /&gt;
# &amp;amp;lt;list&amp;gt; → &amp;amp;lt;list&amp;gt; &amp;amp;lt;item&amp;gt;&lt;br /&gt;
# &amp;amp;lt;list&amp;gt; → &amp;amp;lt;item&amp;gt;&lt;br /&gt;
# &amp;amp;lt;item&amp;gt; → [ &amp;amp;lt;num_arr&amp;gt; ]&lt;br /&gt;
# &amp;amp;lt;num_arr&amp;gt; → &amp;amp;lt;num_arr&amp;gt;, INT&lt;br /&gt;
# &amp;amp;lt;num_arr&amp;gt; → INT&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Uvodimo sledeće sintetizovane atribute:&lt;br /&gt;
* INT&amp;lt;sub&amp;gt;digit&amp;lt;/sub&amp;gt; - digit predstavlja cifru opisanu terminalom INT&lt;br /&gt;
* &amp;lt;num_arr&amp;gt;&amp;lt;sub&amp;gt;minDigit, maxDigit&amp;lt;/sub&amp;gt; - minDigit predstavlja minimalnu cifru sadržanu u nizu cifara &amp;lt;num_arr&amp;gt;, a maxDigit maksimalnu cifru sadržanu u nizu cifara &amp;lt;num_arr&amp;gt;&lt;br /&gt;
* &amp;lt;item&amp;gt;&amp;lt;sub&amp;gt;minDigit, maxDigit&amp;lt;/sub&amp;gt; - minDigit predstavlja minimalnu cifru sadržanu u nizu cifara koji se nalazi u neterminalu &amp;lt;item&amp;gt;, a maxDigit maksimalnu cifru sadržanu u nizu cifara koji se nalazi u neterminalu &amp;lt;item&amp;gt;&lt;br /&gt;
* &amp;lt;list&amp;gt;&amp;lt;sub&amp;gt;value, takeMinDigit&amp;lt;/sub&amp;gt; - value predstavlja vrednost koju treba izračunati po postavci zadatka, a takeMinDigit da li u sledećem koraku treba uzeti minimalnu ili maksimalnu cifru (ovo posmatramo kao neki flag kome u svakom koraku invertujemo vrednost, a čija je početna vrednost 1 jer u prvom koraku uzimamo maksimalnu, a u drugom minimalnu cifru)&lt;br /&gt;
&lt;br /&gt;
Atributivno translaciona gramatika izgleda ovako (stvari koje su dodate u odnosu na gramatiku iz postavke su prikazane &#039;&#039;&#039;podebljanim slovima&#039;&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;list&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;value, takeMinDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; -&amp;gt; &amp;lt;list&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;valueRHS, takeMinDigitRHS&#039;&#039;&#039;&amp;lt;/sub&amp;gt; &amp;lt;item&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigit, maxDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; &#039;&#039;&#039;{ value = valueRHS * 10 + (takeMinDigitRHS == 1) ? minDigit : maxDigit; takeMinDigit = 1 - takeMinDigitRHS; }&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;list&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;value, takeMinDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; -&amp;gt; &amp;lt;item&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigit, maxDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; &#039;&#039;&#039;{ value = maxDigit; takeMinDigit = 1; }&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;item&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigit, maxDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; -&amp;gt; [ &amp;lt;num_arr&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigitRHS, maxDigitRHS&#039;&#039;&#039;&amp;lt;/sub&amp;gt; ] &#039;&#039;&#039;{ minDigit = minDigitRHS; maxDigit = maxDigitRHS; }&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;num_arr&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigit, maxDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; -&amp;gt; &amp;lt;num_arr&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigitRHS, maxDigitRHS&#039;&#039;&#039;&amp;lt;/sub&amp;gt; , INT&amp;lt;sub&amp;gt;&#039;&#039;&#039;digit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; &#039;&#039;&#039;{ minDigit = min(minDigitRHS, digit); maxDigit = max(maxDigitRHS, digit); }&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;num_arr&amp;gt;&amp;lt;sub&amp;gt;&#039;&#039;&#039;minDigit, maxDigit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; -&amp;gt; INT&amp;lt;sub&amp;gt;&#039;&#039;&#039;digit&#039;&#039;&#039;&amp;lt;/sub&amp;gt; &#039;&#039;&#039;{ minDigit = digit; maxDigit = digit; }&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Napisati kompletan prevod funkcija &amp;lt;code&amp;gt;f1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;f2&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; na Mikrojava bajtkod. Smatrati da prevod &amp;lt;code&amp;gt;f1&amp;lt;/code&amp;gt; kreće od adrese 0. Sekciju označenu sa &amp;lt;code&amp;gt;// ...&amp;lt;/code&amp;gt; nije potrebno prevoditi i smatrati da je njena dužina jedna instrukcija.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int b;&lt;br /&gt;
class A {&lt;br /&gt;
    int fun1(int p) {...}&lt;br /&gt;
}&lt;br /&gt;
class B {&lt;br /&gt;
    A[] arr;&lt;br /&gt;
}&lt;br /&gt;
B bObj;&lt;br /&gt;
int f1() {&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
int f2() {&lt;br /&gt;
    return 2;&lt;br /&gt;
}&lt;br /&gt;
void main() int x; {&lt;br /&gt;
    bObj = new B;&lt;br /&gt;
    // ...&lt;br /&gt;
    b = bObj.arr[1].fun1(3);&lt;br /&gt;
    if (b &amp;lt; x) {&lt;br /&gt;
        b = f1();&lt;br /&gt;
    }&lt;br /&gt;
    else b = f2();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
00: enter 0 0&lt;br /&gt;
03: const_1&lt;br /&gt;
04: exit&lt;br /&gt;
05: return&lt;br /&gt;
06: enter 0 0&lt;br /&gt;
09: const_2&lt;br /&gt;
10: exit&lt;br /&gt;
11: return&lt;br /&gt;
12: enter 0 1&lt;br /&gt;
15: new 4&lt;br /&gt;
18: dup&lt;br /&gt;
19: const_2&lt;br /&gt;
20: putfield 0&lt;br /&gt;
23: putstatic 1&lt;br /&gt;
26: ...&lt;br /&gt;
27: getstatic 1&lt;br /&gt;
30: getfield 1&lt;br /&gt;
33: const_1&lt;br /&gt;
34: aload&lt;br /&gt;
35: const_3&lt;br /&gt;
36: getstatic 1&lt;br /&gt;
39: getfield 1&lt;br /&gt;
42: const_1&lt;br /&gt;
43: aload&lt;br /&gt;
44: getfield 0&lt;br /&gt;
47: invokevirtual &#039;f&#039; &#039;u&#039; &#039;n&#039; &#039;1&#039; -1&lt;br /&gt;
68: putstatic 0&lt;br /&gt;
71: getstatic 0&lt;br /&gt;
74: load_0&lt;br /&gt;
75: jge 12&lt;br /&gt;
78: call -78&lt;br /&gt;
81: putstatic 0&lt;br /&gt;
84: jmp 9&lt;br /&gt;
87: call -81&lt;br /&gt;
90: putstatic 0&lt;br /&gt;
93: exit&lt;br /&gt;
94: return&lt;br /&gt;
95: ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=7884</id>
		<title>Програмски преводиоци 1/Фебруар 2021</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2021&amp;diff=7884"/>
		<updated>2024-12-05T12:53:33Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 3. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u februarskom roku 2021. godine&#039;&#039;&#039; održan je 12. februara. Postavka roka je dostupna [http://ir4pp1.etf.rs/Rokovi/2020-2021/pp1-2021-februar-ispit.pdf sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sekvenca od nula ili više promenljivih razdvojenih zarezima. Svaka promenljiva predstavlja niz od jednog ili više znakova, počinje obavezno malim slovom, nakon čega može doći prozvoljan broj znakova iz skupa koji čine mala slova, cifre i specijalni karakter &amp;quot;_&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napisati regularni izraz koji opisuje navedenu sekvencu.&lt;br /&gt;
# Na osnovu regularnog izraza pod a) formirati minimalni DKA korišćenjem metoda pozicije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 1 stablo.svg|thumb|Sintaksno stablo u prvom zadatku.]]&lt;br /&gt;
Regularni izraz koji prepoznaje ovu sekvencu može biti &amp;lt;code&amp;gt;(mo*(,mo*)*|)&amp;lt;/code&amp;gt;, gde je &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; oznaka za malo slovo a &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; oznaka za mala slova, velika slova i donju crtu.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
! 1&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| 2, 3, 6&lt;br /&gt;
|-&lt;br /&gt;
! 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
! 4&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 5&lt;br /&gt;
| 3, 5, 6&lt;br /&gt;
|-&lt;br /&gt;
! 6&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Pretvaranje nedeterminističkog konačnog automata u deterministički&lt;br /&gt;
!         !! m       !! o       !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → 1, 6  || 2, 3, 6 ||         ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2, 3, 6 ||         || 2, 3, 6 || 4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4       || 3, 5, 6 ||         ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| 3, 5, 6 ||         || 3, 5, 6 || 4 || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
!     !! m !! o !! , !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A || B ||   ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| B   ||   || B || C || 1&lt;br /&gt;
|-&lt;br /&gt;
| C   || D ||   ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| D   ||   || D || C || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za datu gramatiku&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → ε&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;&lt;br /&gt;
# &amp;amp;lt;B&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;C&amp;gt; → a &amp;amp;lt;D&amp;gt;&lt;br /&gt;
# &amp;amp;lt;D&amp;gt; → ε&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LR(0) automata i vrstu ∇ kontrolne tabele SLR(1) parsera. Ima li konflikata?&lt;br /&gt;
# Nacrtati stanje ∇ karakterističnog LALR(1) automata i vrstu ∇ kontrolne tabele LALR(1) parsera. Ima li konflikata?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Napomena: ne crtati ostatak karakterističnog automata, niti ostatak kontrolne tabele.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Stanje ∇ sadrži u sebi sledeće smene:&lt;br /&gt;
* &amp;amp;lt;S&#039;&amp;gt; → • &amp;amp;lt;S&amp;gt; ─┤, {}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → • &amp;amp;lt;A&amp;gt; &amp;amp;lt;S&amp;gt;, {─┤}&lt;br /&gt;
* &amp;amp;lt;S&amp;gt; → •, {─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;B&amp;gt; b &amp;amp;lt;B&amp;gt; c, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;A&amp;gt; → • &amp;amp;lt;C&amp;gt; c &amp;amp;lt;B&amp;gt;, {a, ─┤}&lt;br /&gt;
* &amp;amp;lt;B&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {b}&lt;br /&gt;
* &amp;amp;lt;C&amp;gt; → • a &amp;amp;lt;D&amp;gt;, {c}&lt;br /&gt;
Kako bismo odredili ∇ vrstu kontrolne tabele SLR(1) parsera, moramo odrediti i relevantne FIRST i FOLLOW skupove:&lt;br /&gt;
* FOLLOW(&amp;amp;lt;C&amp;gt;) = {c}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤}&lt;br /&gt;
* FIRST(&amp;amp;lt;S&amp;gt;) = FIRST(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;B&amp;gt;) ∪ FIRST(&amp;amp;lt;C&amp;gt;) = {a}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;A&amp;gt;) = FIRST(&amp;amp;lt;S&amp;gt;) ∪ FOLLOW(&amp;amp;lt;S&amp;gt;) = {a, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;B&amp;gt;) = FOLLOW(&amp;amp;lt;A&amp;gt;) ∪ {b, c} = {a, b, c, ─┤}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;D&amp;gt;) = FOLLOW(&amp;amp;lt;C&amp;gt;) ∪ FOLLOW(&amp;amp;lt;B&amp;gt;) = {a, b, c, ─┤}&lt;br /&gt;
Odavde možemo videti da se u &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; koloni nalazi SHIFT, a u ─┤ koloni REDUCE(2). Kontrolna tabela bi trebalo da je ista za oba parsera.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → a &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; b&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → c &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → d&lt;br /&gt;
&lt;br /&gt;
Na ulaz LR(0) parsera koji je opisan datom gramatikom dovedi se ulazna sekvenca &amp;lt;code&amp;gt;accbcadb&amp;lt;/code&amp;gt;. Pretpostavka je da se za oporavak od grešaka koristi jednostavan panic mode algoritam:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# sa sigurnim simbolom c.&lt;br /&gt;
# sa sigurnim simbolom d.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Za tačku a) i b) zasebno prikazati rad parsera i jasno naznačiti da li je parser uspešno završio parsiranje.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Kontrolna tabela LR(0) parsera&lt;br /&gt;
! Stanje             !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;02&amp;lt;/sub&amp;gt; || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ─┤&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;      || ACCEPT&lt;br /&gt;
|-&lt;br /&gt;
| a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| b&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;      || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;      || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;      || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
a)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom c&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 1&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cadb─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || adb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || ─┤ || PANIC: POP 4&lt;br /&gt;
|-&lt;br /&gt;
| ∇  || ─┤ || REJECT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser nije uspešno završio parsiranje, tj. sekvence se odbija.&lt;br /&gt;
&lt;br /&gt;
b)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Rad LR(0) parsera sa sigurnim simbolom d&lt;br /&gt;
! Stek             !! Ulaz     !! Akcija&lt;br /&gt;
|-&lt;br /&gt;
| ∇                  || accbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || ccbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || cbcadb─┤ || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || bcadb─┤ || PANIC: ADVANCE 3&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;  || db─┤ || PANIC: SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || b─┤ || PANIC: ADVANCE 1&lt;br /&gt;
|-&lt;br /&gt;
| ∇a&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;c&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;d&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;  || ─┤ || PANIC: POP 4&lt;br /&gt;
|-&lt;br /&gt;
| ∇  || ─┤ || REJECT&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Parser nije uspešno završio parsiranje, tj. sekvence se odbija.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Kompajler za mikrojavu na izlazu daje sledeći ispis tabele simbola i listing bajtkoda. Kako izgleda izvorni mikrojava program koji odgovara ovim izlazima?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
==================SADRŽAJ TABELE SIMBOLA=======================&lt;br /&gt;
(Level -1)&lt;br /&gt;
Type int: int, 0, 0&lt;br /&gt;
Type char: char, 0, 0&lt;br /&gt;
Con eol: char, 10, 0&lt;br /&gt;
Con null: Class, 0, 0&lt;br /&gt;
Meth chr: char, 0, 1 [Var i: int, 0, 1 ]&lt;br /&gt;
Meth ord: int, 0, 1 [Var ch: char, 0, 1 ]&lt;br /&gt;
Meth len: int, 0, 1 [Var arr: Arr of notype, 0, 1 ]&lt;br /&gt;
Prog PROBA: notype, 0, 0&lt;br /&gt;
[Type SUPERKLASA: Class, 0, 0 [Fld s: int, 1, 1 ][Meth foo: int, 0, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Type POTKLASA: Class, 6, 0 [Fld s: int, 1, 1 ][Fld p: int, 2, 1 ][Meth foo: int, 9, 1 [Var this: Class, 0, 2 ]]]&lt;br /&gt;
[Var sk: Class, 12, 0 ]&lt;br /&gt;
[Meth main: notype, 19, 0 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mikrojava bajkod:&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: enter 1 1&lt;br /&gt;
3: const_0&lt;br /&gt;
4: jmp 3 (=7)&lt;br /&gt;
7: exit&lt;br /&gt;
8: return&lt;br /&gt;
9: enter 1 1&lt;br /&gt;
12: const_1&lt;br /&gt;
13: neg&lt;br /&gt;
14: jmp 3 (=17)&lt;br /&gt;
17: exit&lt;br /&gt;
18: return&lt;br /&gt;
19: enter 0 0&lt;br /&gt;
22: const 102&lt;br /&gt;
27: putstatic 0&lt;br /&gt;
30: const 111&lt;br /&gt;
35: putstatic 1&lt;br /&gt;
38: const 111&lt;br /&gt;
43: putstatic 2&lt;br /&gt;
46: const_m1&lt;br /&gt;
47: putstatic 3&lt;br /&gt;
50: const 0&lt;br /&gt;
55: putstatic 4&lt;br /&gt;
58: const -2&lt;br /&gt;
63: putstatic 5&lt;br /&gt;
66: const 102&lt;br /&gt;
71: putstatic 6&lt;br /&gt;
74: const 111&lt;br /&gt;
79: putstatic 7&lt;br /&gt;
82: const 111&lt;br /&gt;
87: putstatic 8&lt;br /&gt;
90: const_m1&lt;br /&gt;
91: putstatic 9&lt;br /&gt;
94: const 9&lt;br /&gt;
99: putstatic 10&lt;br /&gt;
102: const -2&lt;br /&gt;
107: putstatic 11&lt;br /&gt;
110: new 12&lt;br /&gt;
113: dup&lt;br /&gt;
114: const 6&lt;br /&gt;
119: putfield 0&lt;br /&gt;
122: putstatic 12&lt;br /&gt;
125: getstatic 12&lt;br /&gt;
128: const_1&lt;br /&gt;
129: putfield 1&lt;br /&gt;
132: getstatic 12&lt;br /&gt;
135: dup&lt;br /&gt;
136: getfield 0&lt;br /&gt;
139: invokevirtual foo&lt;br /&gt;
156: const_0&lt;br /&gt;
157: print&lt;br /&gt;
158: exit&lt;br /&gt;
159: return&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
Iz gorenavedene tabele simbola ne može se zaključiti da li je &amp;lt;code&amp;gt;sk&amp;lt;/code&amp;gt; promenljiva tipa &amp;lt;code&amp;gt;SUPERKLASA&amp;lt;/code&amp;gt; ili &amp;lt;code&amp;gt;POTKLASA&amp;lt;/code&amp;gt;, pa se zaključuje na osnovu njenog imena.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
program PROBA&lt;br /&gt;
    class SUPERKLASA {&lt;br /&gt;
        int s;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    class POTKLASA extends SUPERKLASA {&lt;br /&gt;
        int p;&lt;br /&gt;
        {&lt;br /&gt;
            int foo() {&lt;br /&gt;
                return -1;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    SUPERKLASA sk;&lt;br /&gt;
    {&lt;br /&gt;
        void main() {&lt;br /&gt;
            sk = new POTKLASA();&lt;br /&gt;
            sk.s = 1;&lt;br /&gt;
            print(sk.foo(), 0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za dati programski fragment napisati odgovarajući međukod u SSA formi i nacrtati graf toka kontrole na nivou osnovnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
x = 0;&lt;br /&gt;
y = 1;&lt;br /&gt;
z = 2;&lt;br /&gt;
do {&lt;br /&gt;
    x = x - 1;&lt;br /&gt;
&lt;br /&gt;
    if (z == 0) break;&lt;br /&gt;
    else y = y + z;&lt;br /&gt;
&lt;br /&gt;
    z = y + 1;&lt;br /&gt;
} while (z &amp;gt; 1 &amp;amp;&amp;amp; x == 0);&lt;br /&gt;
x = z - y;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR februar 2021 zadatak 5 graf.svg|thumb|Graf toka kontrole u petom zadatku.]]&lt;br /&gt;
# x1 := 0&lt;br /&gt;
# y1 := 1&lt;br /&gt;
# z1 := 2&lt;br /&gt;
# t1 := Ф(x1, x2)&lt;br /&gt;
# t2 := t1 - 1&lt;br /&gt;
# x2 := t2&lt;br /&gt;
# t3 := Ф(z1, z2)&lt;br /&gt;
# if t3 == 0 goto 17&lt;br /&gt;
# t4 := Ф(y1, y2)&lt;br /&gt;
# t5 := Ф(z1, z2)&lt;br /&gt;
# t6 := t4 + t5&lt;br /&gt;
# y2 := t6&lt;br /&gt;
# t7 := y2 + 1&lt;br /&gt;
# z2 := t7&lt;br /&gt;
# if z2 &amp;lt;= 1 goto 17&lt;br /&gt;
# if x2 == 0 goto 4&lt;br /&gt;
# t8 := Ф(y1, y2)&lt;br /&gt;
# t9 := Ф(z1, z2)&lt;br /&gt;
# t10 := t9 - t8&lt;br /&gt;
# x3 := t10&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2018&amp;diff=7883</id>
		<title>Програмски преводиоци 1/Јануар 2018</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2018&amp;diff=7883"/>
		<updated>2024-12-04T12:11:06Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Rešenje */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Ispit u januarskom roku 2018. godine&#039;&#039;&#039; održan je 28. januara. Postavka roka je dostupna [http://ir4pp1.etf.rs/Rokovi/2021-2022/pp1-januar-2021-22.pdf sa stranice predmeta.]&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data gramatika sa skupom terminala {+ - N * X ↑} opisuje polinom (na primer -5*X↑2+3*X-1).&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Transformisati gramatiku u LL(1) gramatiku.&lt;br /&gt;
# Dodati LL(1) gramatici attribute da se izračuna vrednost polinoma za zadatu vrednost X. Pri tome, zadata vrednost X se prosleđuje kao nasleđeni atribut &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; neterminala &amp;amp;lt;P&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt;, a vrednost polinoma treba da se dobije kao sintetizovani atribut y istog neterminala. Dodatno, terminal N&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; ima atribut &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; koji predstavlja celobrojnu vrednost. Ostali terminali nemaju atribute.&lt;br /&gt;
# Za LL(1) gramatiku sa atributima dobijenu pod b) prikazati delove parsera na principu rekurzivnog spusta: proceduru main i delove parsera koji odgovaraju smenama za neterminale &amp;amp;lt;P&amp;gt; i &amp;amp;lt;XnaN&amp;gt;. Ostatak parsera ne navoditi. Koristiti funkciju advance(attr) koja vraća kao rezultat sledeći token sa ulaza i dodatno vraća kroz parameter attr vrednost atributa tog tokena (0 ako token nema atribut).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; → &amp;amp;lt;P&amp;gt; &amp;amp;lt;T&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&amp;gt; → &amp;amp;lt;T&amp;gt;&lt;br /&gt;
# &amp;amp;lt;T&amp;gt; → + N &amp;amp;lt;XnaN&amp;gt;&lt;br /&gt;
# &amp;amp;lt;T&amp;gt; → - N &amp;amp;lt;XnaN&amp;gt;&lt;br /&gt;
# &amp;amp;lt;XnaN&amp;gt; → * X&lt;br /&gt;
# &amp;amp;lt;XnaN&amp;gt; → * X ↑ N&lt;br /&gt;
# &amp;amp;lt;XnaN&amp;gt; → ε&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
a) b)&lt;br /&gt;
# &amp;amp;lt;P&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → &amp;amp;lt;T&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; &amp;amp;lt;P&#039;&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(1) = {+, -}&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_1 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_2 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr y_1 + y_2&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&#039;&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → &amp;amp;lt;T&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; &amp;amp;lt;P&#039;&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(2) = {+, -}&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_1 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_2 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr y_1 + y_2&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;P&#039;&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → ε&lt;br /&gt;
#: SELECT(3) = {─┤}&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr 0&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;T&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → + N&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; &amp;amp;lt;XnaN&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(4) = {+}&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_1 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr k \cdot y_1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;T&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → - N&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt; &amp;amp;lt;XnaN&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(5) = {-}&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_1 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr -k \cdot y_1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;XnaN&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → * X &amp;amp;lt;Na&amp;gt;&amp;lt;sub&amp;gt;x&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,y&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(6) = {*}&lt;br /&gt;
#: &amp;lt;math&amp;gt;x_1 \larr x&amp;lt;/math&amp;gt;&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr y_1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;XnaN&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → ε&lt;br /&gt;
#: SELECT(7) = {+, -, ─┤}&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr 1&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Na&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → ↑ N&amp;lt;sub&amp;gt;k&amp;lt;/sub&amp;gt;&lt;br /&gt;
#: SELECT(8) = {↑}&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr x^k&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;amp;lt;Na&amp;gt;&amp;lt;sub&amp;gt;x,y&amp;lt;/sub&amp;gt; → ε&lt;br /&gt;
#: SELECT(9) = {+, -, ─┤}&lt;br /&gt;
#: &amp;lt;math&amp;gt;y \larr 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
c)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;cmath&amp;gt;&lt;br /&gt;
char input;&lt;br /&gt;
int attr;&lt;br /&gt;
&lt;br /&gt;
void terminal(char t) {&lt;br /&gt;
    if (input == t) {&lt;br /&gt;
        input = advance(&amp;amp;attr);&lt;br /&gt;
    } else {&lt;br /&gt;
        reject();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main() {&lt;br /&gt;
    input = advance(&amp;amp;attr);&lt;br /&gt;
    P();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void P(int&amp;amp; y,int x) {&lt;br /&gt;
    switch (input) {&lt;br /&gt;
        case &#039;+&#039;:&lt;br /&gt;
        case &#039;-&#039;:&lt;br /&gt;
            int y1,y2;&lt;br /&gt;
            T(&amp;amp;y1,x);&lt;br /&gt;
            P1(&amp;amp;y2,x);&lt;br /&gt;
            y = y1+y2;&lt;br /&gt;
            break;&lt;br /&gt;
        default: reject();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void XNan(int&amp;amp; y,int x) {&lt;br /&gt;
    switch (input) {&lt;br /&gt;
        case &#039;*&#039;:&lt;br /&gt;
            terminal(&#039;*&#039;);&lt;br /&gt;
            terminal(&#039;X&#039;);&lt;br /&gt;
            int y1;&lt;br /&gt;
            XNan1(&amp;amp;y1,x);&lt;br /&gt;
            y = y1;&lt;br /&gt;
            break;&lt;br /&gt;
        case &#039;+&#039;:&lt;br /&gt;
        case &#039;-&#039;:&lt;br /&gt;
        case &#039;EOF&#039;:&lt;br /&gt;
            y=1;&lt;br /&gt;
            break;&lt;br /&gt;
        default: reject();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Predstaviti memorijski raspored, u vreme izvršavanja programa, objekata c1, c2, d1 i d2 i odgovarajućih virtuelnih tabela.&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class A           { int a = 0; int f() {...} }&lt;br /&gt;
class B extends A { int g (){...} }&lt;br /&gt;
class C extends B { int g (){...} }&lt;br /&gt;
class D extends B { int b = 0; int f (){...} }&lt;br /&gt;
C c1 = new C(); C c2 = new C();&lt;br /&gt;
D d1 = new D(); D d2 = new D();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Nacrtati izgled run time steka programa i navesti sekvencu koda za formiranje pristupne veze procedure P4 (ostatak pozivne sekvence ne navoditi). Procedure P3 i P4 su ugneždene u proceduru P2, koja je ugneždena u proceduru P1. Iz P1 se poziva P2, iz P2 se poziva P3, iz P3 se poziva P4.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR januar 2018 zadatak 2 stek.svg|thumb|Stek u drugom zadatku.]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Raspored statičkog dela memorije u vreme izvršavanja.&lt;br /&gt;
! Adresa !! Vrednost&lt;br /&gt;
|-&lt;br /&gt;
| 0      || Adresa c1&lt;br /&gt;
|-&lt;br /&gt;
| 1      || Adresa c2&lt;br /&gt;
|-&lt;br /&gt;
| 2      || Adresa d1&lt;br /&gt;
|-&lt;br /&gt;
| 3      || Adresa d2&lt;br /&gt;
|-&lt;br /&gt;
| 4      || &amp;quot;f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 5      || -1&lt;br /&gt;
|-&lt;br /&gt;
| 6      || Adresa A::f&lt;br /&gt;
|-&lt;br /&gt;
| 7      || -2&lt;br /&gt;
|-&lt;br /&gt;
| 8      || &amp;quot;f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 9      || -1&lt;br /&gt;
|-&lt;br /&gt;
| 10     || Adresa A::f&lt;br /&gt;
|-&lt;br /&gt;
| 11     || &amp;quot;g&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 12     || -1&lt;br /&gt;
|-&lt;br /&gt;
| 13     || Adresa B::g&lt;br /&gt;
|-&lt;br /&gt;
| 14     || -2&lt;br /&gt;
|-&lt;br /&gt;
| 15     || &amp;quot;f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 16     || -1&lt;br /&gt;
|-&lt;br /&gt;
| 17     || Adresa A::f&lt;br /&gt;
|-&lt;br /&gt;
| 18     || &amp;quot;g&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 19     || -1&lt;br /&gt;
|-&lt;br /&gt;
| 20     || Adresa C::g&lt;br /&gt;
|-&lt;br /&gt;
| 21     || -2&lt;br /&gt;
|-&lt;br /&gt;
| 22     || &amp;quot;f&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 23     || -1&lt;br /&gt;
|-&lt;br /&gt;
| 24     || Adresa D::f&lt;br /&gt;
|-&lt;br /&gt;
| 25     || &amp;quot;g&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 26     || -1&lt;br /&gt;
|-&lt;br /&gt;
| 27     || Adresa B::g&lt;br /&gt;
|-&lt;br /&gt;
| 28     || -2&lt;br /&gt;
|}&lt;br /&gt;
Kod sa procedurama o kojima je reč bi izgledao ovako:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
procedure P1&lt;br /&gt;
    procedure P2&lt;br /&gt;
        procedure P3&lt;br /&gt;
        begin&lt;br /&gt;
            P4();&lt;br /&gt;
        end&lt;br /&gt;
        procedure P4&lt;br /&gt;
        begin&lt;br /&gt;
            ...&lt;br /&gt;
        end&lt;br /&gt;
    begin&lt;br /&gt;
        P3();&lt;br /&gt;
    end&lt;br /&gt;
begin&lt;br /&gt;
    P2();&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pošto su P3 i P4 na istom leksičkom nivou, a P3 poziva P4, formiranje pristupne veze postiže se sa &amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot; inline&amp;gt;PUSH [BP+04]&amp;lt;/syntaxhighlight&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Neka je s&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; sekvenca koju prihvata automat (1), s&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; sekvenca koju prihvata automat (2), a s&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; sekvenca koju prihvata automat (3).&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Konstruisati nedeterministički konačni automat koji prihvata sekvence opisane regularnim izrazom s&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;(s&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;|s&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;).&lt;br /&gt;
# Dobijeni NKA iz tačke a) konvertovati u deterministički konačni automat.&lt;br /&gt;
# Za dobijeni DKA u tački b) proveriti da li je minimalan i, ukoliko je potrebno, sprovesti proces minimizacije.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat (1).&lt;br /&gt;
! Stanje !! 0 !! 1 !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A    || A || C || 1&lt;br /&gt;
|-&lt;br /&gt;
| B      || A || B || 0&lt;br /&gt;
|-&lt;br /&gt;
| C      || B || C || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat (2).&lt;br /&gt;
! Stanje !! 0 !! 1 !! 2 !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → D    || D || D || E || 0&lt;br /&gt;
|-&lt;br /&gt;
| E      || D || E || E || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat (3).&lt;br /&gt;
! Stanje !! 2 !! 3 !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → F    || F || G || 1&lt;br /&gt;
|-&lt;br /&gt;
| G      || G || F || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Nedeterministički konačni automat&lt;br /&gt;
! Stanje    !! 0       !! 1       !! 2    !! 3 !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → A, D, F || A, D, F || C, D, F || E, F || G || 1&lt;br /&gt;
|-&lt;br /&gt;
| C, D, F   || B, D    || C, D, F || E, F || G || 1&lt;br /&gt;
|-&lt;br /&gt;
| E, F      || D       || E       || E, F || G || 1&lt;br /&gt;
|-&lt;br /&gt;
| G         ||         ||         || G    || F || 0&lt;br /&gt;
|-&lt;br /&gt;
| B, D      || A, D, F || B, D    || E    ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| D         || D       || D       || E    ||   || 0&lt;br /&gt;
|-&lt;br /&gt;
| E         || D       || E       || E    ||   || 1&lt;br /&gt;
|-&lt;br /&gt;
| F         ||         ||         || F    || G || 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Deterministički konačni automat&lt;br /&gt;
! Stanje !! 0  !! 1  !! 2  !! 3  !! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| → S1   || S1 || S2 || S3 || S4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| S2     || S5 || S2 || S3 || S4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| S3     || S6 || S7 || S3 || S4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| S4     ||    ||    || S4 || S8 || 0&lt;br /&gt;
|-&lt;br /&gt;
| S5     || S1 || S5 || S7 ||    || 0&lt;br /&gt;
|-&lt;br /&gt;
| S6     || S6 || S6 || S7 ||    || 0&lt;br /&gt;
|-&lt;br /&gt;
| S7     || S6 || S7 || S7 ||    || 1&lt;br /&gt;
|-&lt;br /&gt;
| S8     ||    ||    || S8 || S4 || 1&lt;br /&gt;
|}&lt;br /&gt;
Navedeni deterministički konačni automat je već minimalan.&lt;br /&gt;
&lt;br /&gt;
== 4. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Za programski fragment napisati odgovarajući troadresni međukod u SSA formi i dati graf toka kontrole na nivou bazičnih blokova.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
void insertionSort(int arr[], int n)&lt;br /&gt;
{&lt;br /&gt;
    int i, key, j;&lt;br /&gt;
    i = 1;&lt;br /&gt;
    while (i &amp;lt; n)&lt;br /&gt;
    {&lt;br /&gt;
        key = arr[i];&lt;br /&gt;
        j = i-1;&lt;br /&gt;
        while (j &amp;gt;= 0 &amp;amp;&amp;amp; arr[j] &amp;gt; key)&lt;br /&gt;
        {&lt;br /&gt;
            arr[j+1] = arr[j];&lt;br /&gt;
            j = j-1;&lt;br /&gt;
        }&lt;br /&gt;
        arr[j+1] = key;&lt;br /&gt;
        i++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR januar 2018 zadatak 4 graf.svg|thumb|center|500px|Graf toka kontrole u četvrtom zadatku.]]&lt;br /&gt;
&lt;br /&gt;
== 5. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data je sledeća gramatika:&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → &amp;amp;lt;S&amp;gt; , &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;S&amp;gt; → 1 &amp;amp;lt;A&amp;gt;&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → ( &amp;amp;lt;S&amp;gt; )&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → 0&lt;br /&gt;
# &amp;amp;lt;A&amp;gt; → ε&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Konstruisati karakteristični LR(0) automat za datu gramatiku i kontrolnu tabelu SLR(1) parsera.&lt;br /&gt;
# Prikazati LALR(1) predikcione skupove konfiguracija u početnom stanju LR(0) automata i svim stanjima u koja se neposredno prelazi iz početnog stanja.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR januar 2018 zadatak 5 automat.svg|thumb|Karakteristični LR(0) automat u petom zadatku.]]&lt;br /&gt;
* FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤, &amp;quot;,&amp;quot;, )}&lt;br /&gt;
* FOLLOW(&amp;amp;lt;A&amp;gt;) = FOLLOW(&amp;amp;lt;S&amp;gt;) = {─┤, &amp;quot;,&amp;quot;, )}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Kontrolna tabela SLR(1) parsera&lt;br /&gt;
! Stanje              !! ,         !! 0     !! 1     !! (     !! )         !! ─┤&lt;br /&gt;
|-&lt;br /&gt;
| ∇                   ||           ||       || SHIFT ||       ||           ||&lt;br /&gt;
|-&lt;br /&gt;
| 1&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;       || REDUCE(5) || SHIFT ||       || SHIFT || REDUCE(5) || REDUCE(5)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;x1&amp;lt;/sub&amp;gt; || SHIFT     ||       ||       ||       ||           || SHIFT&lt;br /&gt;
|-&lt;br /&gt;
| ,&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;       || REDUCE(5) || SHIFT ||       || SHIFT || REDUCE(5) || REDUCE(5)&lt;br /&gt;
|-&lt;br /&gt;
| (&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;       ||           ||       || SHIFT ||       ||           ||&lt;br /&gt;
|-&lt;br /&gt;
| 0&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt;       || REDUCE(4) ||       ||       ||       || REDUCE(4) || REDUCE(4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;S&amp;gt;&amp;lt;sub&amp;gt;x2&amp;lt;/sub&amp;gt; || SHIFT     ||       ||       ||       || SHIFT     ||&lt;br /&gt;
|-&lt;br /&gt;
| )&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt;       || REDUCE(3) ||       ||       ||       || REDUCE(3) || REDUCE(3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  || REDUCE(1) ||       ||       ||       || REDUCE(1) || REDUCE(1)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;A&amp;gt;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;  || REDUCE(2) ||       ||       ||       || REDUCE(2) || REDUCE(2)&lt;br /&gt;
|-&lt;br /&gt;
| ─┤&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;      ||           ||       ||       ||       ||           || ACCEPT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Dat je listing programa napisanog na programskom jeziku Mikrojava. Sve metode unutrašnjih klasa su virtuelne. Globalne metode se pozivaju statički.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Ukoliko se vrši sintaksno-upravljano prevođenje, prikazati izgled tabele simbola u trenutku &amp;lt;code&amp;gt;/*T*/&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Napisati kompletan Mikrojava bajtkod prevoda funkcije &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
program Ispit&lt;br /&gt;
    const int K = 2;&lt;br /&gt;
    class C {&lt;br /&gt;
        int d;&lt;br /&gt;
    {&lt;br /&gt;
        int m(int c)&lt;br /&gt;
        { return c * d; }&lt;br /&gt;
    } }&lt;br /&gt;
    class DC extends C {&lt;br /&gt;
        int v;&lt;br /&gt;
    {&lt;br /&gt;
        int m(int q) /*T*/&lt;br /&gt;
        { return q + d; }&lt;br /&gt;
    } }&lt;br /&gt;
{&lt;br /&gt;
    void main()&lt;br /&gt;
        C c;&lt;br /&gt;
    {&lt;br /&gt;
        c = new DC;&lt;br /&gt;
        c.d = c.m(K);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Датотека:PPR januar 2018 zadatak 6 tabela.svg|thumb|Tabela simbola u šestom zadatku.]]&lt;br /&gt;
Prevod bajtkoda funkcije &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; može biti:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
enter 0, 1&lt;br /&gt;
new 12&lt;br /&gt;
dup&lt;br /&gt;
const_4&lt;br /&gt;
putfield 0&lt;br /&gt;
store_0&lt;br /&gt;
load_0&lt;br /&gt;
load_0&lt;br /&gt;
const_2&lt;br /&gt;
load_0&lt;br /&gt;
getfield 0&lt;br /&gt;
invokevirtual &#039;m&#039; -1&lt;br /&gt;
putfield 1&lt;br /&gt;
exit&lt;br /&gt;
return&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=7882</id>
		<title>Информациони системи 2</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=7882"/>
		<updated>2024-12-03T13:16:30Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Лабораторијске вежбе */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С114ИС2&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [http://is2.etf.bg.ac.rs/ is2.etf.rs]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
| претходни = Информациони системи 1&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Информациони системи 2&#039;&#039;&#039; је изборни предмет у седмом семестру, као наставак [[Информациони системи 1|Информационих система 1]].&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** BPMN дијаграми процеса&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** BPMN дијаграми кореографије&lt;br /&gt;
** BPMN дијаграми конверзације&lt;br /&gt;
** Сервиси&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Складишта података&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са пројектом на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: окружења за израду, шта се ради на домаћем, водичи за домаћи (уколико су довољно слични из године у годину), где наћи старе домаће, колико бодова носе, када се предају, како изгледа одбрана, да ли је обавезан, корисни материјали --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
Области које се раде на лабораторијским вежбама:&lt;br /&gt;
* &#039;&#039;&#039;Прва лаб вежба:&#039;&#039;&#039;&lt;br /&gt;
** BPMN&lt;br /&gt;
** jBPM&lt;br /&gt;
* &#039;&#039;&#039;Друга лаб вежба:&#039;&#039;&#039;&lt;br /&gt;
** Складишта података&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се не објављују на страници предмета, али се у одељку за [[#Потребна помоћ|препис рокова]] могу наћи неки рокови од претходних година.&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 1 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Информациони системи 2/К1&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 2 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Информациони системи 2/К2&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
Слично као на [[Информациони системи 1#Начин оцењивања|ИС1]], осим што су бодови са лабораторијских вежби замењени.&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — Бодови са колоквијума (0-15). &#039;&#039;&#039;На сваки колоквијум је могуће изаћи само једном.&#039;&#039;&#039; Надокнада колоквијума могућа је у термину јануарског испита.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt; — Бодови са прве лабораторијске вежбе (0-12). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt; — Бодови са друге лабораторијске вежбе (0-8). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt; — Бодови са пројекта (0-20). &#039;&#039;&#039;Пројекат се може бранити само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са испита (0-30). &amp;lt;!-- Не брините се, испит може да се ради више пута. --&amp;gt;&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = K_1 + K_2 + L_1 + L_2 + PR + I&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 50&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;90 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Рачунање ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;calculator&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K1&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K2&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L1&amp;quot; data-max=&amp;quot;12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L2&amp;quot; data-max=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;PR&amp;quot; data-max=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;I&amp;quot; data-max=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;P&amp;quot; data-expression=&amp;quot;K1 K2 L1 L2 PR I + + + + +&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Оцена: &amp;lt;span data-expression=&amp;quot;P 10 / ceil 5 max 10 min&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{задаци|postavke}}&lt;br /&gt;
* {{задаци|prepis}}&lt;br /&gt;
** К1 2020 rešenje: [https://cdn.discordapp.com/attachments/725101389285556225/1033798946335760524/Resenje_Z1.pdf]&lt;br /&gt;
** K2 septembar 2021: [https://cdn.discordapp.com/attachments/696381655933386832/1074609589946962030/15.09.2021_Sep_2021_K2.docx]&lt;br /&gt;
** К2 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063425294557532270/Screenshot_20230113_125144_Gallery.jpg]&lt;br /&gt;
** Пример К3 из 2022/2023. године: [https://cdn.discordapp.com/attachments/725101389285556225/1063264638940217404/IS2-k3-primer.pdf]&lt;br /&gt;
** К3 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063678658407055440/WhatsApp_Image_2023-01-14_at_05.30.36.jpeg]&lt;br /&gt;
** К3 2023: [https://cdn.discordapp.com/attachments/725101389285556225/1071402228474195968/2e6fb381-0fcf-4c8c-9ace-bfc40d5bcabf.jpg]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=7881</id>
		<title>Информациони системи 2</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8_2&amp;diff=7881"/>
		<updated>2024-12-03T13:12:40Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Настава */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| шифра     = 13С114ИС2&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [http://is2.etf.bg.ac.rs/ is2.etf.rs]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
| претходни = Информациони системи 1&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Информациони системи 2&#039;&#039;&#039; је изборни предмет у седмом семестру, као наставак [[Информациони системи 1|Информационих система 1]].&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** BPMN дијаграми процеса&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** BPMN дијаграми кореографије&lt;br /&gt;
** BPMN дијаграми конверзације&lt;br /&gt;
** Сервиси&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Складишта података&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са пројектом на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: окружења за израду, шта се ради на домаћем, водичи за домаћи (уколико су довољно слични из године у годину), где наћи старе домаће, колико бодова носе, када се предају, како изгледа одбрана, да ли је обавезан, корисни материјали --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са лабораторијским вежбама на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: када се одржавају, шта се на њима ради, шта се ради пре лабораторијске вежбе, у ком окружењу се ради, колико бодова носе, где наћи претходне лабораторијске вежбе, водичи за израду --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се не објављују на страници предмета, али се у одељку за [[#Потребна помоћ|препис рокова]] могу наћи неки рокови од претходних година.&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 1 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Информациони системи 2/К1&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Колоквијум 2 ===&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| titleregexp     = Информациони системи 2/К2&lt;br /&gt;
| noresultsheader = Тренутно нема решених рокова.&lt;br /&gt;
| format          = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦24¦-1}²]],,&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
Слично као на [[Информациони системи 1#Начин оцењивања|ИС1]], осим што су бодови са лабораторијских вежби замењени.&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — Бодови са колоквијума (0-15). &#039;&#039;&#039;На сваки колоквијум је могуће изаћи само једном.&#039;&#039;&#039; Надокнада колоквијума могућа је у термину јануарског испита.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt; — Бодови са прве лабораторијске вежбе (0-12). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt; — Бодови са друге лабораторијске вежбе (0-8). &#039;&#039;&#039;Могуће је изаћи само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt; — Бодови са пројекта (0-20). &#039;&#039;&#039;Пројекат се може бранити само једном.&#039;&#039;&#039; Надокнада могућа у фебруарском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — Бодови са испита (0-30). &amp;lt;!-- Не брините се, испит може да се ради више пута. --&amp;gt;&lt;br /&gt;
* Укупни бодови: &amp;lt;math&amp;gt;P = K_1 + K_2 + L_1 + L_2 + PR + I&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P \leq 50&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;50 &amp;lt; P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;60 &amp;lt; P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;70 &amp;lt; P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;80 &amp;lt; P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;90 &amp;lt; P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Рачунање ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;calculator&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K1&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;K_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;K2&amp;quot; data-max=&amp;quot;15&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L1&amp;quot; data-max=&amp;quot;12&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;L2&amp;quot; data-max=&amp;quot;8&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;PR&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;PR&amp;quot; data-max=&amp;quot;20&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;I&amp;quot; data-max=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;: &amp;lt;span data-variable=&amp;quot;P&amp;quot; data-expression=&amp;quot;K1 K2 L1 L2 PR I + + + + +&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Оцена: &amp;lt;span data-expression=&amp;quot;P 10 / ceil 5 max 10 min&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{задаци|postavke}}&lt;br /&gt;
* {{задаци|prepis}}&lt;br /&gt;
** К1 2020 rešenje: [https://cdn.discordapp.com/attachments/725101389285556225/1033798946335760524/Resenje_Z1.pdf]&lt;br /&gt;
** K2 septembar 2021: [https://cdn.discordapp.com/attachments/696381655933386832/1074609589946962030/15.09.2021_Sep_2021_K2.docx]&lt;br /&gt;
** К2 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063425294557532270/Screenshot_20230113_125144_Gallery.jpg]&lt;br /&gt;
** Пример К3 из 2022/2023. године: [https://cdn.discordapp.com/attachments/725101389285556225/1063264638940217404/IS2-k3-primer.pdf]&lt;br /&gt;
** К3 2022: [https://cdn.discordapp.com/attachments/725101389285556225/1063678658407055440/WhatsApp_Image_2023-01-14_at_05.30.36.jpeg]&lt;br /&gt;
** К3 2023: [https://cdn.discordapp.com/attachments/725101389285556225/1071402228474195968/2e6fb381-0fcf-4c8c-9ace-bfc40d5bcabf.jpg]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7880</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7880"/>
		<updated>2024-12-03T13:07:16Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Испитни рокови */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
На вежбама се не прелази градиво већ се решавају домаћи задаци&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Домаћи се на предмету задају сваке недеље на предавањима, а решавају се на вежбама и код куће. Рок за сваки домаћи је 5 дана, и сваки домаћи носи по 5 поена. Дванаести домаћи је једини који се ради на лицу места и рок за израду је 2 сата. Поред редовних, постоје и бонус домаћи који се обично састоје од неких математичких извођења, или ручног решавања проблема са домаћег, на којима се може добити оквирно од 1 до 5 поена по бонус задатку. Домаћи нису обавезни али се без њих не може положити предмет јер носе 60% оцене. После сваког домаћег, неколицина случајно изабраних студената се позива на одбрану, где се обично само прође кроз код, евентуално уз неко питање. Добро проверите да ли вам решење ради јер јако тешко враћају поене на увиду за домаћи. Уколико копирате домаћи од неког, број поена на том домаћем вам се дели са 2 (или са више уколико вас је више предало исти код), и не иде се на дисциплинску.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима. Предмет је специфичан по томе што је на испиту дозвољено све, може се радити и на свом рачунару, користити интернет, кодови са домаћих итд.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7879</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7879"/>
		<updated>2024-12-03T13:05:10Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Лабораторијске вежбе */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
На вежбама се не прелази градиво већ се решавају домаћи задаци&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Домаћи се на предмету задају сваке недеље на предавањима, а решавају се на вежбама и код куће. Рок за сваки домаћи је 5 дана, и сваки домаћи носи по 5 поена. Дванаести домаћи је једини који се ради на лицу места и рок за израду је 2 сата. Поред редовних, постоје и бонус домаћи који се обично састоје од неких математичких извођења, или ручног решавања проблема са домаћег, на којима се може добити оквирно од 1 до 5 поена по бонус задатку. Домаћи нису обавезни али се без њих не може положити предмет јер носе 60% оцене. После сваког домаћег, неколицина случајно изабраних студената се позива на одбрану, где се обично само прође кроз код, евентуално уз неко питање. Добро проверите да ли вам решење ради јер јако тешко враћају поене на увиду за домаћи. Уколико копирате домаћи од неког, број поена на том домаћем вам се дели са 2 (или са више уколико вас је више предало исти код), и не иде се на дисциплинску.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7878</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7878"/>
		<updated>2024-12-03T13:04:41Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Домаћи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
На вежбама се не прелази градиво већ се решавају домаћи задаци&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Домаћи се на предмету задају сваке недеље на предавањима, а решавају се на вежбама и код куће. Рок за сваки домаћи је 5 дана, и сваки домаћи носи по 5 поена. Дванаести домаћи је једини који се ради на лицу места и рок за израду је 2 сата. Поред редовних, постоје и бонус домаћи који се обично састоје од неких математичких извођења, или ручног решавања проблема са домаћег, на којима се може добити оквирно од 1 до 5 поена по бонус задатку. Домаћи нису обавезни али се без њих не може положити предмет јер носе 60% оцене. После сваког домаћег, неколицина случајно изабраних студената се позива на одбрану, где се обично само прође кроз код, евентуално уз неко питање. Добро проверите да ли вам решење ради јер јако тешко враћају поене на увиду за домаћи. Уколико копирате домаћи од неког, број поена на том домаћем вам се дели са 2 (или са више уколико вас је више предало исти код), и не иде се на дисциплинску.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са лабораторијским вежбама на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: када се одржавају, шта се на њима ради, шта се ради пре лабораторијске вежбе, у ком окружењу се ради, колико бодова носе, где наћи претходне лабораторијске вежбе, водичи за израду --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7877</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7877"/>
		<updated>2024-12-03T13:02:23Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Настава */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
На вежбама се не прелази градиво већ се решавају домаћи задаци&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Домаћи се на предмету задају сваке недеље на предавањима, а решавају се на вежбама и код куће. Рок за сваки домаћи је 5 дана, и сваки домаћи носи по 5 поена. Дванаести домаћи је једини који се ради на лицу места и рок за израду је 2 сата. Поред редовних, постоје и бонус домаћи који се обично састоје од неких математичких извођења, или ручног решавања проблема са домаћег, на којима се може добити оквирно од 1 до 5 поена по бонус задатку. Домаћи нису обавезни али се без њих не може положити предмет јер носе 60% оцене.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са лабораторијским вежбама на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: када се одржавају, шта се на њима ради, шта се ради пре лабораторијске вежбе, у ком окружењу се ради, колико бодова носе, где наћи претходне лабораторијске вежбе, водичи за израду --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7876</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7876"/>
		<updated>2024-12-03T13:01:53Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Домаћи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
Домаћи се на предмету задају сваке недеље на предавањима, а решавају се на вежбама и код куће. Рок за сваки домаћи је 5 дана, и сваки домаћи носи по 5 поена. Дванаести домаћи је једини који се ради на лицу места и рок за израду је 2 сата. Поред редовних, постоје и бонус домаћи који се обично састоје од неких математичких извођења, или ручног решавања проблема са домаћег, на којима се може добити оквирно од 1 до 5 поена по бонус задатку. Домаћи нису обавезни али се без њих не може положити предмет јер носе 60% оцене.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са лабораторијским вежбама на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: када се одржавају, шта се на њима ради, шта се ради пре лабораторијске вежбе, у ком окружењу се ради, колико бодова носе, где наћи претходне лабораторијске вежбе, водичи за израду --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7875</id>
		<title>ИОА</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%98%D0%9E%D0%90&amp;diff=7875"/>
		<updated>2024-12-03T12:58:55Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Настава */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Инжењерски оптимизациони алгоритми&lt;br /&gt;
| шифра     = 13С074ИОА&lt;br /&gt;
| семестар  = 7&lt;br /&gt;
| статус    = изборни&lt;br /&gt;
| страница  = [https://mtt.etf.bg.ac.rs/si/ioa.htm mtt.etf.rs/si/ioa.htm]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Инжењерски оптимизациони алгоритми&#039;&#039;&#039; је изборни предмет у седмом семестру.&lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде иде листа (спољашњих, не на викију) веза до свих корисних страница у вези са предметом, укључујући материјале поменуте на [[Остали материјали]].. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Прво иду везе до званичних страница, па онда осталих, уређених по корисности --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Остале корисне везе, попут веза до развојних окружења која се користе на предмету --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Корисно је сумаризовати поред сваког линка какви се материјали налазе на њему (рокови, решења, белешке, водичи, лабови, модификације) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
Области се на следећи начин обрађују по блоковима:&lt;br /&gt;
* &#039;&#039;&#039;Први блок:&#039;&#039;&#039;&lt;br /&gt;
** Систематско претраживање&lt;br /&gt;
** Случајно претраживање&lt;br /&gt;
** Локални оптимизациони алгоритми&lt;br /&gt;
* &#039;&#039;&#039;Други блок:&#039;&#039;&#039;&lt;br /&gt;
** Градијент метода&lt;br /&gt;
** Симплекс алгоритам&lt;br /&gt;
** Данцигов симплекс&lt;br /&gt;
** Симулирано каљење&lt;br /&gt;
** Генетички алгоритам&lt;br /&gt;
* &#039;&#039;&#039;Трећи блок:&#039;&#039;&#039;&lt;br /&gt;
** Кретање јата&lt;br /&gt;
** Диференцијална еволуција&lt;br /&gt;
** Оптимизација са више критеријума&lt;br /&gt;
&lt;br /&gt;
== Домаћи ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са домаћим задацима на предмету (уколико постоје), као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: окружења за израду, шта се ради на домаћем, водичи за домаћи (уколико су довољно слични из године у годину), где наћи старе домаће, колико бодова носе, када се предају, како изгледа одбрана, да ли је обавезан, корисни материјали --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
{{непотпун одељак}}&lt;br /&gt;
&amp;lt;!-- Овде се наводе све битне информације у вези са лабораторијским вежбама на предмету, као и потребни материјали. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Информације које вреди поменути: када се одржавају, шта се на њима ради, шта се ради пре лабораторијске вежбе, у ком окружењу се ради, колико бодова носе, где наћи претходне лабораторијске вежбе, водичи за израду --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови се званично објављују на страници предмета, са решењима.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума (0-20)&lt;br /&gt;
* &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; — бодови са вежби (0-60, 12 вежби по 5 бодова)&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита (0-40)&lt;br /&gt;
* &amp;lt;math&amp;gt;P = \min(K_1 + K_2 + L, 70) + min(I, 30)&amp;lt;/math&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Бодови&lt;br /&gt;
| &amp;lt;math&amp;gt;P &amp;lt; 51&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;51 \leq P \leq 60&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;61 \leq P \leq 70&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;71 \leq P \leq 80&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;81 \leq P \leq 90&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;91 \leq P&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Оцена&lt;br /&gt;
| 5 || 6 || 7 || 8 || 9 || 10&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=7854</id>
		<title>Програмски преводиоци 1/К1 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%81%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B8%D0%BE%D1%86%D0%B8_1/%D0%9A1_2022&amp;diff=7854"/>
		<updated>2024-10-29T13:09:16Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* 3. zadatak */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Prvi kolokvijum 2022. godine&#039;&#039;&#039; održan je 31. oktobra i trajao je 90 minuta. Postavka roka još uvek nije zvanično dostupna sa stranice predmeta.&lt;br /&gt;
&lt;br /&gt;
== 1. zadatak ==&lt;br /&gt;
{{delimično rešeno}}&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Data su tri deterministička automata, M, N i P.&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Napraviti deterministički konačni automat K koji prihvata sekvence tipa &amp;lt;math&amp;gt;s_1|(s_2s_3)&amp;lt;/math&amp;gt;, gde su &amp;lt;math&amp;gt;s_1&amp;lt;/math&amp;gt; sve sekvence koje automat M odbija, a &amp;lt;math&amp;gt;s_2&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;s_3&amp;lt;/math&amp;gt; sekvence koje automati N i P prihvataju, respektivno.&lt;br /&gt;
# Od automata iz tačke pod a napraviti desno-linearnu gramatiku, a zatim iz nje izbaciti sve nedostižne ili mrtve neterminale.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat M&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat N&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D&lt;br /&gt;
| E&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F&lt;br /&gt;
| E&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Automat P&lt;br /&gt;
!&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Nedeterminstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! F&lt;br /&gt;
| F,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2 &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Determinstički automat koji prihvata s2s3&lt;br /&gt;
!&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! 0&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
! D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! E&lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
! 1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
! 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2 &lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Nedeterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| C&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| D,1&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički automat koji prihvata traženu sekvencu&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! 0&lt;br /&gt;
! 1&lt;br /&gt;
! 2&lt;br /&gt;
! a&lt;br /&gt;
! 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,D,1}, S0&lt;br /&gt;
| A,1&lt;br /&gt;
| B,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A,1}, S1&lt;br /&gt;
| A,1&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {B,E}, S2&lt;br /&gt;
| B&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {2}, S3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {B}, S4&lt;br /&gt;
| B&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,D,1}, S5&lt;br /&gt;
| A,1&lt;br /&gt;
| C,E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {E}, S6&lt;br /&gt;
| &lt;br /&gt;
| D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {1}, S7&lt;br /&gt;
| 1&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {C}, S8&lt;br /&gt;
| A&lt;br /&gt;
| C&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {C,E}, S9&lt;br /&gt;
| A&lt;br /&gt;
| C,D,1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| {D,1}, S10&lt;br /&gt;
| 1&lt;br /&gt;
| E&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| {A}, S11&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
Aritmetički izraz se sastoji iz nula ili više brojeva, gde je broj niz cifara, sa aritmetičkim operacijama sabiranja ili oduzimanja između njih. Ukoliko su terminali u datoj azbuci jedna cifra (&amp;quot;CIFRA&amp;quot;), znak za sabiranje (&amp;quot;+&amp;quot;) i znak za oduzimanje (&amp;quot;-&amp;quot;) napisati regularni izraz koji opisuje date aritmetičke izraze, a zatim ga pretvoriti u deterministički konačni automat korišćenjem metoda pozicija.&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 2 stablo.svg|thumb|center|Poziciono stablo u drugom zadatku.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Tabela sledećih pozicija&lt;br /&gt;
|-&lt;br /&gt;
! Pozicija&lt;br /&gt;
! Sledeća pozicija&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| /&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Deterministički konačni automat za traženi regularni izraz&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! CIFRA&lt;br /&gt;
! +&lt;br /&gt;
! -&lt;br /&gt;
! Prihvata&lt;br /&gt;
|-&lt;br /&gt;
| 1,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 1,2,3,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0&lt;br /&gt;
|-&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 1,2,3,4,5&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. zadatak ==&lt;br /&gt;
=== Postavka ===&lt;br /&gt;
[[Datoteka:PPR K1 2022 zadatak 3 automat.svg|thumb|Konačni automat iz postavke zadatka.]]&lt;br /&gt;
Napisati fragment programskog koda koji implementira konačni automat sa slike:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# eksplicitnom predstavom funkcije stanja&lt;br /&gt;
# implicitnom predstavom funkcija stanja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rešenje ===&lt;br /&gt;
&lt;br /&gt;
a) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class FSM&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    switch( state ) &lt;br /&gt;
    {&lt;br /&gt;
      case S0:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else&lt;br /&gt;
          state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
      &lt;br /&gt;
      case S1:&lt;br /&gt;
      	if ( ch==0 )&lt;br /&gt;
          state = State.S1;&lt;br /&gt;
        else if ( ch==1 )&lt;br /&gt;
          state = State.S0;&lt;br /&gt;
&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
      case ERROR:&lt;br /&gt;
        state = State.ERROR;&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
b) &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class FSM_TT&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
enum State {&lt;br /&gt;
    S0( false ),&lt;br /&gt;
    S1( true ),&lt;br /&gt;
    ERROR( false );&lt;br /&gt;
&lt;br /&gt;
    final boolean accepting;&lt;br /&gt;
&lt;br /&gt;
    State( boolean accepting ) {&lt;br /&gt;
        this.accepting = accepting;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static State state;&lt;br /&gt;
static State transition[3][2] = &lt;br /&gt;
{&lt;br /&gt;
	{ State.S1, State.ERROR},&lt;br /&gt;
	{ State.S1, State.S0},&lt;br /&gt;
	{ State.ERROR, State.ERROR}&lt;br /&gt;
};  &lt;br /&gt;
  static void handleInput(int ch)&lt;br /&gt;
  {&lt;br /&gt;
    int index;&lt;br /&gt;
	switch( ch ) &lt;br /&gt;
    {&lt;br /&gt;
      case 0:&lt;br /&gt;
	    index=0;&lt;br /&gt;
		break;&lt;br /&gt;
	  case 1:&lt;br /&gt;
		index=1;&lt;br /&gt;
		break;&lt;br /&gt;
	  default:&lt;br /&gt;
	    state=State.ERROR;&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
    state = transition[state.ordinal()][index];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) throws java.io.IOException&lt;br /&gt;
  {&lt;br /&gt;
	int ch;&lt;br /&gt;
    state = State.S0;&lt;br /&gt;
    while ((ch = System.in.read ()) != &#039;\n&#039;)&lt;br /&gt;
      handleInput(ch);&lt;br /&gt;
    &lt;br /&gt;
    if (state.accepting) &lt;br /&gt;
      System.out.println(&amp;quot;Prihvata&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      System.out.println(&amp;quot;Odbija&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Програмски преводиоци 1]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2020&amp;diff=7697</id>
		<title>КДП/Фебруар 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2020&amp;diff=7697"/>
		<updated>2024-06-23T13:23:46Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Решење */ uslovi nisu bili dobri za ovaj kod koji je napisan unutar petlje&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
&#039;&#039;&#039;Фебруарски испит 2020. године&#039;&#039;&#039; одржан је 8. фебруара. Поставка се може наћи са [https://rti.etf.bg.ac.rs/rti/ir3kdp/rokovi/kdp20.zip странице предмета] (зипована).&lt;br /&gt;
&lt;br /&gt;
== {{категорија|1. задатак|Семафори}} ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Користећи расподељене бинарне семафоре решити проблем произвођача и потрошача (&#039;&#039;Producer – Consumer Problem&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Решење са бафером за M произвођача и N потрошача&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;semaphore&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class ProducerConsumer {&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
	&lt;br /&gt;
	const int CAPACITY=...;&lt;br /&gt;
	int writeCursor=0;&lt;br /&gt;
	int readCursor = 0;&lt;br /&gt;
	&lt;br /&gt;
	int data[CAPACITY]; //Примера ради је узето да произвођач прави податке типа int&lt;br /&gt;
	&lt;br /&gt;
	std::binary_semaphore space_available(CAPACITY);&lt;br /&gt;
	std::binary_semaphore item_available(0);&lt;br /&gt;
	std::binary_semaphore mutexProducer(1);&lt;br /&gt;
	std::binary_semaphore mutexConsumer(1);&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
public:&lt;br /&gt;
&lt;br /&gt;
	void producer() {&lt;br /&gt;
	&lt;br /&gt;
		spaceAvailable.acquire(); //у std::binary_semaphore ово је еквивалент операцији wait&lt;br /&gt;
		mutexProducer.acquire();&lt;br /&gt;
		&lt;br /&gt;
		data[writeCursor] = this.produce(); //Нека метода која би враћала неки број&lt;br /&gt;
		&lt;br /&gt;
		writeCursor = (writeCursor + 1) % CAPACITY;&lt;br /&gt;
		&lt;br /&gt;
		mutexProducer.release();&lt;br /&gt;
		item_available.release(); //у std::binary_semaphore ово је еквивалент операцији signal&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	int consumer() {&lt;br /&gt;
		item_available.acquire();&lt;br /&gt;
		mutexConsumer.acquire()&lt;br /&gt;
		&lt;br /&gt;
		int i = data[readCursor];&lt;br /&gt;
		&lt;br /&gt;
		readCursor = (readCursor + 1) % CAPACITY;&lt;br /&gt;
		&lt;br /&gt;
		item_available.release();&lt;br /&gt;
		mutexConsumer.release()&lt;br /&gt;
		&lt;br /&gt;
		return i;&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{категорија|2. задатак|Региони}} ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Постоји група од N филозофа који проводи свој живот тако што наизменично филозофирају, чекају на пиће, и пију (&#039;&#039;The Drinking Philosophers Problem&#039;&#039;). Филозофи су тако распоређени да је по једна флаша са пићем постављенa између суседних филозофа. У неком тренутку филозоф може да постане жедан. Жедном филозофу је потребно неколико суседних флаша да би направио коктел и почео да га пије. Избор пића зависи од тренутног расположења и може се разликовати од прилике до прилике. Када прикупи сва потребна пића филозоф започиње са њиховим испијањем које траје извесно време. Када се напије, филозоф враћа флаше да и други уживају, а он прелази на филозофирање. Написати програм који симулира понашање филозофа користећи условне критичне регионе.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;queue&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
const int N = 100;&lt;br /&gt;
&lt;br /&gt;
struct Table {&lt;br /&gt;
    int drinks[N] = {-1};&lt;br /&gt;
    queue&amp;lt;int&amp;gt; drinkQueues[N];&lt;br /&gt;
};&lt;br /&gt;
Table table;&lt;br /&gt;
&lt;br /&gt;
void philosophizing();&lt;br /&gt;
void drinking();&lt;br /&gt;
vector&amp;lt;int&amp;gt; getDrinkRound();&lt;br /&gt;
&lt;br /&gt;
void philosopher(int id) {&lt;br /&gt;
    while (true) {&lt;br /&gt;
        vector&amp;lt;int&amp;gt; drinks = getDrinkRound();&lt;br /&gt;
        region (table) {&lt;br /&gt;
            for (int drink : drinks) {&lt;br /&gt;
                if (table.drinks[drink] == -1) {&lt;br /&gt;
                    table.drinks[drink] = id;&lt;br /&gt;
                } else {&lt;br /&gt;
                    table.drinkQueues[drink].push(id);&lt;br /&gt;
                    await (table.drinks[drink] == id);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        drinking();&lt;br /&gt;
        region (table) {&lt;br /&gt;
            for (int drink : drinks) {&lt;br /&gt;
                if (table.drinkQueues[drink].empty()) {&lt;br /&gt;
                    table.drinks[drink] = -1;&lt;br /&gt;
                } else {&lt;br /&gt;
                    table.drinks[drink] = table.drinkQueues[drink].front();&lt;br /&gt;
                    table.drinkQueues[drink].pop();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        philosophizing();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{категорија|3. задатак|Филтерски_процеси}} ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Филтерски процеси имају један улаз и један излаз. Процеси имају само три локације. Направите проточну обраду (pipeline) од n ових филтерских процеса који проналазе медијану: до n улазних позитивних вредности (непарно) које се убацују на почетак проточне обраде, а завршавају се са EOS. На излаз проточне обраде се шаље медијана па EOS.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Пошто је у задатку речено да је дозвољено користити само три локације у процесу, једна ће бити одвојена за број који пристиже а друге две за локалне минимуме и максимуме. Памтиће се минимуми и максимуми јер је медијана непарног броја елемената управо она вредност која је тачно на средини листе у сортираном поретку. За разлику од других решења оваквог типа задатка на викију, ништа се не шаље на излаз осим EOS кад се исти прими јер је сва обрада за медијану већ разрешена унутар петље. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void process() {&lt;br /&gt;
&lt;br /&gt;
    chan&amp;lt;int&amp;gt; in;&lt;br /&gt;
    chan&amp;lt;int&amp;gt; out;&lt;br /&gt;
    int input;&lt;br /&gt;
    int mem[2];&lt;br /&gt;
    while ((input = in.receive()) != EOS) {       &lt;br /&gt;
        if (mem[0] &amp;lt;= input &amp;amp;&amp;amp; input &amp;lt;= mem[1]) {&lt;br /&gt;
              out.send(input);&lt;br /&gt;
            } else if (input &amp;lt; mem[0]) {&lt;br /&gt;
                out.send(mem[0]);&lt;br /&gt;
                mem[0] = input;&lt;br /&gt;
            } else if (input &amp;gt; mem[1]) {&lt;br /&gt;
                out.send(mem[1]);&lt;br /&gt;
                mem[1] = input;&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
    out.send(EOS);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== {{категорија|4. задатак|C-Linda}} ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Посматра се берберница у којој за три различите столице раде три берберина (&#039;&#039;The Hilzer&#039;s Barbershop problem&#039;&#039;). Поред ове три столице у берберници се налази и чекаоница која прима 10 муштерија које могу да седе и 10 које могу да стоје, укупно 20. Када муштерија дође до бербернице уколико на шишање чека више од 20 муштерија онда одлази, а уколико берберница није пуна онда остаје. Уколико барем један берберин спава муштерија која дође на ред за шишање буди оног берберина који је најдуже спавао и седа у његову столицу. На место те муштерије која је устала седа муштерија која је најдуже стајала. Уколико су сви бербери заузети онда муштерија чека, и то ако има места за седење седа, а ако не онда стоји. Муштерије се опслужују у редоследу по коме су приспеле, и седају у истом том редоследу. Када берберин заврши са шишањем муштерија му плаћа и излази из бербернице. Берберин све време или спава или шиша или наплаћује. Користећи C-Linda написати процесе берберина и муштерија.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
[[Категорија:КДП]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%A1%D0%98&amp;diff=7633</id>
		<title>ПСИ</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%A1%D0%98&amp;diff=7633"/>
		<updated>2024-05-13T08:54:56Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Настава */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Принципи софтверског инжењерства&lt;br /&gt;
| шифра     = 13С113ПСИ&lt;br /&gt;
| семестар  = 6&lt;br /&gt;
| статус    = обавезни&lt;br /&gt;
| страница  = [http://si3psi.etf.bg.ac.rs/ si3psi.etf.rs]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Принципи софтверског инжењерства&#039;&#039;&#039; је, како да кажем, обавезни предмет у шестом семестру. &lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
* [https://drive.google.com/open?id=17qAsB4iE87vqjBmEzWRutJBqYMr7sZsq ETF SI] (белешке)&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
На предавањима се раде следеће области:&lt;br /&gt;
* &#039;&#039;&#039;Први колоквијум:&#039;&#039;&#039; Модели процеса, RUP, агилне методологије, инжењерство захтева&lt;br /&gt;
* &#039;&#039;&#039;Други колоквијум:&#039;&#039;&#039; Објектно-оријентисано пројектовање, пројектовање веб апликација,&lt;br /&gt;
* &#039;&#039;&#039;Испит:&#039;&#039;&#039;  микросервиси, тестирање софтвера, процена напора&lt;br /&gt;
Вежбе до првог колоквијума се односе на различите фазе пројекта (израда ССУ и прототипа, формална инспекција, Моделовање базе података) и Git, а после настављају да се баве програмским језиком Python (радни оквир &#039;&#039;Django&#039;&#039; и wsgiref). Како долазе фазе израде пројекта, тако се одржавају и вежбе из тих фаза (моделовање веб апликација и тестирање).&lt;br /&gt;
&lt;br /&gt;
На првом колоквијуму (на папиру) од градива долази градиво рађено на предавањима и један задатак из Git-a, на другом колоквијуму (на рачунару и на папиру) долази теорија која вреди 5 поена и задатака са вежби који вреди 10 поена, а на испиту (теорија на папиру, практични део на рачунару) долази заједно градиво другог колоквијума и са предавања другог и трећег блока (од школске 2023/2024 ће можда теоријски део бити избачен са испита). Док се на вежбама ради Python, на лабораторијским вежбама обрађује се Gerrit.&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Пројекат се ради у групама од 2 до 4 члана, и циљ пројекта јесте да се студенти упознају са радом у тиму на неком сложенијем софтверу. Ради се из неколико фаза:&lt;br /&gt;
# Смишљање теме&lt;br /&gt;
#* У овој фази је циљ да смислите нацрт пројекта, који садржи барем 3 категорије корисника и довољан број функционалности (примери се могу наћи на страници предмета)&lt;br /&gt;
#* Уколико се планира рад са неким другим технологијама које нису обрађене на предмету (али са којима се такође не ради на другим предметима) то треба јавити предметним наставницима&lt;br /&gt;
# Израда документа са спецификацијом случајева употребе и прототипа апликације&lt;br /&gt;
#* Први део ове фазе састоји се од тога да се у пројекту дефинише барем 12 (3 по члану тима) спецификација случајева употребе (ССУ) за које се примери могу наћи на страници предмета&lt;br /&gt;
#* Други део састоји се од тога да се за направљене ССУ праве прототипи коришћењем неких алата за прављење прототипа (нпр. &#039;&#039;Pencil&#039;&#039;, &#039;&#039;Figma&#039;&#039;) или HTML&lt;br /&gt;
#** Препоручује се рад у HTML како би се прототип касније могао искоритити приликом имплементације&lt;br /&gt;
#* Могућа је такође расподела тако да један члан прави цео прототип, а остали пишу ССУ документе&lt;br /&gt;
# Формална инспекција пројеката других тимова&lt;br /&gt;
#* Први део ове фазе састоји се од тога да радите формалну инспекцију пројекта другог тима на следећи начин:&lt;br /&gt;
#*# Други тим вама пошаље пројекат а ви пошаљете пројекат неком другом тиму (насумично изабрано од стране асистената)&lt;br /&gt;
#*# Одржите састанак на коме вођа тима подели улоге члановима свог тима, а доступне улоге су:&lt;br /&gt;
#*#* Модератор — главна особа за ову фазу&lt;br /&gt;
#*#* Записничар — води записник на коначном састанку тима&lt;br /&gt;
#*#* Инспектори — чланови тима који прегледају прототип и ССУ документе другом тиму&lt;br /&gt;
#*# Након поделе улога, инспектори прегледају и попуњавају логове инспектора&lt;br /&gt;
#*# Одржава се коначни састанак тима на ком записничар записује закључке са састанка&lt;br /&gt;
#*# После састанка, записничар и модератор састављају извештај о дефектима&lt;br /&gt;
#*# Извештај о дефектима се шаље другом тиму, а сви документи у овој фази предметним асистентима&lt;br /&gt;
# Моделовање базе података&lt;br /&gt;
#* Циљ ове фазе је моделовати базу која ће се користити у фази имплементације коришћењем алата &#039;&#039;ERwin Data Modeler&#039;&#039;, &#039;&#039;Toad Data Modeler&#039;&#039; или &#039;&#039;MySQL Workbench&#039;&#039;&lt;br /&gt;
#* Поред модела базе, у овој фази је такође потребно саставити документ са спецификацијом базе података чији се пример може пронаћи на страници предмета&lt;br /&gt;
# Имплементација веб апликације&lt;br /&gt;
#* Главна фаза пројекта, у којој се прави да апликација ради то што је спецификовано у ССУ и нацрту пројекта&lt;br /&gt;
#* Неопходно је демонстрирати коришћење &#039;&#039;XMLHttpRequest&#039;&#039;/&#039;&#039;Fetch API&#039;&#039; (на вежбама названи &#039;&#039;AJAX&#039;&#039;)&lt;br /&gt;
#* Унутар сваког фајла са кодом неопходно је написати ауторе, док је изнад сваке класе и методе контролера и модела потребно додати документационе коментаре шта они раде&lt;br /&gt;
#* Вођа тима мора написати документ са коришћеним алатима, где су укратко набројани сви алати коришћени у свим фазама и описи њиховог коришћења&lt;br /&gt;
#* На крају фазе је потребно предати и довољно попуњен модел базе података у виду SQL скрипте&lt;br /&gt;
# Моделовање веб апликације&lt;br /&gt;
#* Моделовање имплементиране апликације у алату &#039;&#039;StarUML&#039;&#039;, на сличан начин као на [[Пројектовање софтвера|Пројектовању софтвера]]&lt;br /&gt;
#* Потребно је искористити релације између клијентских страница као што је показано на вежбама, али у упутству може да се помиње нека застарела &#039;&#039;WAE-UML&#039;&#039; екстензија коју није могуће инсталирати на новом &#039;&#039;StarUML&#039;&#039; и која се не мора користити&lt;br /&gt;
# Тестирање веб апликације&lt;br /&gt;
#* Потребно је спровести јединично тестирање контролера и модела, као и интеграционо тестирање коришћењем &#039;&#039;Selenium&#039;&#039;&lt;br /&gt;
#* Није потребно прављење никаквог тест плана&lt;br /&gt;
Пројекат се генерално ради у програмским језицима обрађиваним на вежбама и лабораторијским вежбама, али могуће је изабрати неку другу технологију која досад није била обрађивана на факултету. Обавезна је употреба неког алата за верзионисање софтвера, и резултати сваке фазе се шаљу на репозиторијум кода.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
Лабораторијске вежбе су показног карактера. Постоји четири лабораторијске вежбе и на њима се обрађују:&lt;br /&gt;
# Алати за верзионисање попут &#039;&#039;Git&#039;&#039; и &#039;&#039;Subversion&#039;&#039;&lt;br /&gt;
# Језик &#039;&#039;PHP&#039;&#039; са &#039;&#039;MVC&#039;&#039; узорцима / &#039;&#039;Django&#039;&#039; радни оквир (основно)&lt;br /&gt;
# &#039;&#039;PHP&#039;&#039; радни оквири / &#039;&#039;Django&#039;&#039; радни оквир (напредно)&lt;br /&gt;
# Повезивање веб апликације са ORM / Додатне функционалности &#039;&#039;Django&#039;&#039; радног оквира&lt;br /&gt;
За сваку лабораторијску вежбу, поред часа одржаног уживо, има доступан снимак. Рад са &#039;&#039;Django&#039;&#039; радним оквиром се обрађује само на другој, трећој и четвртој лабораторијској вежби, и не обрађује се на регуларним вежбама.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови су доступни са странице предмета, али без решења. Решења теоријског дела јунског рока 2020. могу се наћи на драјву из [[#Корисне везе|одељка са корисним везама]].&lt;br /&gt;
&lt;br /&gt;
Следећи испитни рокови су доступни на викију:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = ПСИ&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| format      = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]],,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
}}&lt;br /&gt;
Уколико желите да додате рок, посетите &#039;&#039;&#039;[[Project:Направи#Стандард (ћирилица)|страницу за прављење рока]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума, први и други колоквијум се могу надокнадити у јунском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; — бодови са тимског пројекта&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита&lt;br /&gt;
* Коначни бодови: &amp;lt;math&amp;gt;P = K_1 + K_2 + D + I&amp;lt;/math&amp;gt;&lt;br /&gt;
* Услов: &amp;lt;math&amp;gt;D \geq 20&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;K_1 + K_2 + I \geq 30&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{zadaci|postavke}}&lt;br /&gt;
* {{zadaci|rešenja}}&lt;br /&gt;
*: Рокови којима недостаје понеко решење су: {{rokovi|делимично решени}}`&lt;br /&gt;
* {{zadaci|prepis}}&lt;br /&gt;
** Фебруар 2020. године: [https://cdn.discordapp.com/attachments/725100611909058722/984238475454861332/20220609_013016.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238475719114863/20220609_013031.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238475991736351/20220609_013043.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238476327264296/20220609_013049.jpg]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9F%D0%A1%D0%98&amp;diff=7632</id>
		<title>ПСИ</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9F%D0%A1%D0%98&amp;diff=7632"/>
		<updated>2024-05-13T08:45:00Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Предмет&lt;br /&gt;
| назив     = Принципи софтверског инжењерства&lt;br /&gt;
| шифра     = 13С113ПСИ&lt;br /&gt;
| семестар  = 6&lt;br /&gt;
| статус    = обавезни&lt;br /&gt;
| страница  = [http://si3psi.etf.bg.ac.rs/ si3psi.etf.rs]&lt;br /&gt;
| одсек     = СИ&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;Принципи софтверског инжењерства&#039;&#039;&#039; је, како да кажем, обавезни предмет у шестом семестру. &lt;br /&gt;
&lt;br /&gt;
== Корисне везе ==&lt;br /&gt;
* [https://drive.google.com/open?id=17qAsB4iE87vqjBmEzWRutJBqYMr7sZsq ETF SI] (белешке)&lt;br /&gt;
&lt;br /&gt;
== Настава ==&lt;br /&gt;
На предавањима се раде следеће области:&lt;br /&gt;
* &#039;&#039;&#039;Први колоквијум:&#039;&#039;&#039; Модели процеса, RUP, агилне методологије, инжењерство захтева&lt;br /&gt;
* &#039;&#039;&#039;Испит:&#039;&#039;&#039; Објектно-оријентисано пројектовање, пројектовање веб апликација, микросервиси, тестирање софтвера, процена напора&lt;br /&gt;
Вежбе до првог колоквијума се односе на различите фазе пројекта (израда ССУ и прототипа, формална инспекција, Моделовање базе података) и Git, а после настављају да се баве програмским језиком Python (радни оквир &#039;&#039;Django&#039;&#039; и wsgiref). Како долазе фазе израде пројекта, тако се одржавају и вежбе из тих фаза (моделовање веб апликација и тестирање).&lt;br /&gt;
&lt;br /&gt;
На првом колоквијуму (на папиру) од градива долази градиво рађено на предавањима и један задатак из Git-a, на другом колоквијуму (на рачунару и на папиру) долази теорија која вреди 5 поена и задатака са вежби који вреди 10 поена, а на испиту (теорија на папиру, практични део на рачунару) долази заједно градиво другог колоквијума и са предавања другог и трећег блока (од школске 2023/2024 ће можда теоријски део бити избачен са испита). Док се на вежбама ради Python, на лабораторијским вежбама обрађује се Gerrit.&lt;br /&gt;
&lt;br /&gt;
== Пројекат ==&lt;br /&gt;
Пројекат се ради у групама од 2 до 4 члана, и циљ пројекта јесте да се студенти упознају са радом у тиму на неком сложенијем софтверу. Ради се из неколико фаза:&lt;br /&gt;
# Смишљање теме&lt;br /&gt;
#* У овој фази је циљ да смислите нацрт пројекта, који садржи барем 3 категорије корисника и довољан број функционалности (примери се могу наћи на страници предмета)&lt;br /&gt;
#* Уколико се планира рад са неким другим технологијама које нису обрађене на предмету (али са којима се такође не ради на другим предметима) то треба јавити предметним наставницима&lt;br /&gt;
# Израда документа са спецификацијом случајева употребе и прототипа апликације&lt;br /&gt;
#* Први део ове фазе састоји се од тога да се у пројекту дефинише барем 12 (3 по члану тима) спецификација случајева употребе (ССУ) за које се примери могу наћи на страници предмета&lt;br /&gt;
#* Други део састоји се од тога да се за направљене ССУ праве прототипи коришћењем неких алата за прављење прототипа (нпр. &#039;&#039;Pencil&#039;&#039;, &#039;&#039;Figma&#039;&#039;) или HTML&lt;br /&gt;
#** Препоручује се рад у HTML како би се прототип касније могао искоритити приликом имплементације&lt;br /&gt;
#* Могућа је такође расподела тако да један члан прави цео прототип, а остали пишу ССУ документе&lt;br /&gt;
# Формална инспекција пројеката других тимова&lt;br /&gt;
#* Први део ове фазе састоји се од тога да радите формалну инспекцију пројекта другог тима на следећи начин:&lt;br /&gt;
#*# Други тим вама пошаље пројекат а ви пошаљете пројекат неком другом тиму (насумично изабрано од стране асистената)&lt;br /&gt;
#*# Одржите састанак на коме вођа тима подели улоге члановима свог тима, а доступне улоге су:&lt;br /&gt;
#*#* Модератор — главна особа за ову фазу&lt;br /&gt;
#*#* Записничар — води записник на коначном састанку тима&lt;br /&gt;
#*#* Инспектори — чланови тима који прегледају прототип и ССУ документе другом тиму&lt;br /&gt;
#*# Након поделе улога, инспектори прегледају и попуњавају логове инспектора&lt;br /&gt;
#*# Одржава се коначни састанак тима на ком записничар записује закључке са састанка&lt;br /&gt;
#*# После састанка, записничар и модератор састављају извештај о дефектима&lt;br /&gt;
#*# Извештај о дефектима се шаље другом тиму, а сви документи у овој фази предметним асистентима&lt;br /&gt;
# Моделовање базе података&lt;br /&gt;
#* Циљ ове фазе је моделовати базу која ће се користити у фази имплементације коришћењем алата &#039;&#039;ERwin Data Modeler&#039;&#039;, &#039;&#039;Toad Data Modeler&#039;&#039; или &#039;&#039;MySQL Workbench&#039;&#039;&lt;br /&gt;
#* Поред модела базе, у овој фази је такође потребно саставити документ са спецификацијом базе података чији се пример може пронаћи на страници предмета&lt;br /&gt;
# Имплементација веб апликације&lt;br /&gt;
#* Главна фаза пројекта, у којој се прави да апликација ради то што је спецификовано у ССУ и нацрту пројекта&lt;br /&gt;
#* Неопходно је демонстрирати коришћење &#039;&#039;XMLHttpRequest&#039;&#039;/&#039;&#039;Fetch API&#039;&#039; (на вежбама названи &#039;&#039;AJAX&#039;&#039;)&lt;br /&gt;
#* Унутар сваког фајла са кодом неопходно је написати ауторе, док је изнад сваке класе и методе контролера и модела потребно додати документационе коментаре шта они раде&lt;br /&gt;
#* Вођа тима мора написати документ са коришћеним алатима, где су укратко набројани сви алати коришћени у свим фазама и описи њиховог коришћења&lt;br /&gt;
#* На крају фазе је потребно предати и довољно попуњен модел базе података у виду SQL скрипте&lt;br /&gt;
# Моделовање веб апликације&lt;br /&gt;
#* Моделовање имплементиране апликације у алату &#039;&#039;StarUML&#039;&#039;, на сличан начин као на [[Пројектовање софтвера|Пројектовању софтвера]]&lt;br /&gt;
#* Потребно је искористити релације између клијентских страница као што је показано на вежбама, али у упутству може да се помиње нека застарела &#039;&#039;WAE-UML&#039;&#039; екстензија коју није могуће инсталирати на новом &#039;&#039;StarUML&#039;&#039; и која се не мора користити&lt;br /&gt;
# Тестирање веб апликације&lt;br /&gt;
#* Потребно је спровести јединично тестирање контролера и модела, као и интеграционо тестирање коришћењем &#039;&#039;Selenium&#039;&#039;&lt;br /&gt;
#* Није потребно прављење никаквог тест плана&lt;br /&gt;
Пројекат се генерално ради у програмским језицима обрађиваним на вежбама и лабораторијским вежбама, али могуће је изабрати неку другу технологију која досад није била обрађивана на факултету. Обавезна је употреба неког алата за верзионисање софтвера, и резултати сваке фазе се шаљу на репозиторијум кода.&lt;br /&gt;
&lt;br /&gt;
== Лабораторијске вежбе ==&lt;br /&gt;
Лабораторијске вежбе су показног карактера. Постоји четири лабораторијске вежбе и на њима се обрађују:&lt;br /&gt;
# Алати за верзионисање попут &#039;&#039;Git&#039;&#039; и &#039;&#039;Subversion&#039;&#039;&lt;br /&gt;
# Језик &#039;&#039;PHP&#039;&#039; са &#039;&#039;MVC&#039;&#039; узорцима / &#039;&#039;Django&#039;&#039; радни оквир (основно)&lt;br /&gt;
# &#039;&#039;PHP&#039;&#039; радни оквири / &#039;&#039;Django&#039;&#039; радни оквир (напредно)&lt;br /&gt;
# Повезивање веб апликације са ORM / Додатне функционалности &#039;&#039;Django&#039;&#039; радног оквира&lt;br /&gt;
За сваку лабораторијску вежбу, поред часа одржаног уживо, има доступан снимак. Рад са &#039;&#039;Django&#039;&#039; радним оквиром се обрађује само на другој, трећој и четвртој лабораторијској вежби, и не обрађује се на регуларним вежбама.&lt;br /&gt;
&lt;br /&gt;
== Испитни рокови ==&lt;br /&gt;
Испитни рокови су доступни са странице предмета, али без решења. Решења теоријског дела јунског рока 2020. могу се наћи на драјву из [[#Корисне везе|одељка са корисним везама]].&lt;br /&gt;
&lt;br /&gt;
Следећи испитни рокови су доступни на викију:&lt;br /&gt;
{{#dpl:&lt;br /&gt;
| category    = ПСИ&lt;br /&gt;
| category    = Рокови&lt;br /&gt;
| format      = ,\n* [[%PAGE%|²{#invoke:String¦sub¦%PAGE%¦5¦-1}²]],,&lt;br /&gt;
| ordermethod = title&lt;br /&gt;
}}&lt;br /&gt;
Уколико желите да додате рок, посетите &#039;&#039;&#039;[[Project:Направи#Стандард (ћирилица)|страницу за прављење рока]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Начин оцењивања ==&lt;br /&gt;
* &amp;lt;math&amp;gt;K_1, K_2&amp;lt;/math&amp;gt; — бодови са првог и другог колоквијума, први и други колоквијум се могу надокнадити у јунском испитном року.&lt;br /&gt;
* &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; — бодови са тимског пројекта&lt;br /&gt;
* &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt; — бодови са испита&lt;br /&gt;
* Коначни бодови: &amp;lt;math&amp;gt;P = K_1 + K_2 + D + I&amp;lt;/math&amp;gt;&lt;br /&gt;
* Услов: &amp;lt;math&amp;gt;D \geq 20&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;K_1 + K_2 + I \geq 30&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Потребна помоћ ==&lt;br /&gt;
* {{zadaci|postavke}}&lt;br /&gt;
* {{zadaci|rešenja}}&lt;br /&gt;
*: Рокови којима недостаје понеко решење су: {{rokovi|делимично решени}}`&lt;br /&gt;
* {{zadaci|prepis}}&lt;br /&gt;
** Фебруар 2020. године: [https://cdn.discordapp.com/attachments/725100611909058722/984238475454861332/20220609_013016.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238475719114863/20220609_013031.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238475991736351/20220609_013043.jpg] [https://cdn.discordapp.com/attachments/725100611909058722/984238476327264296/20220609_013049.jpg]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D1%99%D0%B0%D1%9A%D0%B5_%D1%83_%D1%80%D0%B5%D0%B0%D0%BB%D0%BD%D0%BE%D0%BC_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D1%83/%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82&amp;diff=7631</id>
		<title>Управљање у реалном времену/Практични тест</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D1%99%D0%B0%D1%9A%D0%B5_%D1%83_%D1%80%D0%B5%D0%B0%D0%BB%D0%BD%D0%BE%D0%BC_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D1%83/%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82&amp;diff=7631"/>
		<updated>2024-05-09T14:07:42Z</updated>

		<summary type="html">&lt;p&gt;DjoleRkc: /* Прва лабораторијска вежба */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
На &#039;&#039;&#039;практичном тесту&#039;&#039;&#039; из предмета могу да дођу задаци са прве две лабораторијске вежбе. Студенти добијају задатак са прве или друге лабораторијске вежбе, насумично. За израду теста предвиђено је 50 минута и носи 25 поена.&lt;br /&gt;
&lt;br /&gt;
== Прва лабораторијска вежба ==&lt;br /&gt;
За све варијанте неопходно је користити тајмер и бројач.&lt;br /&gt;
=== Варијанта 1 ===&lt;br /&gt;
Након држања старт и стоп дугмета истовремено и чекања 5 секунди треба да се упали мотор. Док мотор ради, зелена лампица трепери фреквенцијом од 1Hz. Ако је мотор упаљен и стоп дугме се држи 2 секунде, потребно је упалити црвену лампу. Мотор се гаси притискањем стоп дугмета пет пута.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 2 ===&lt;br /&gt;
Да би се упалио мотор прво је потребно притиснути старт и стоп истовремено, а затим држати стоп 5 секунди. Док је упаљен мотор зелена и црвена лампица наизменично трепћу фреквенцијом од 1Hz. Морот се гаси притискањем старт дугмета 3 пута.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 3 ===&lt;br /&gt;
Уколико је прекидач померен у десну страну, зелена лампица светли три секунде, затим не светли једну секунду и затим опет. Уколико се пет пута притисне зелени тастер док лампица сија, пали се црвена лампица. Када се притисне на црвени тастер док сија пали се мотор. Мотор, као и лампице, се гасе након што се прекидач врати у средину.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 4 ===&lt;br /&gt;
Мотор се пали држањем стоп дугмета и  кликтањем 3 пута  на старт дугме. Док је упаљен мотор држи се стоп дугме. Мотор се гаси пуштањем стоп дугмета или кликтањем на старт дугме 5с или више након покретања мотора.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 5 ===&lt;br /&gt;
Мотор се пали притискањем старт и стоп дугмета истовремено а затим држањем стоп дугмета 5с. Мотор се гаси притискањем старт дугмета 3 пута. Док је мотор упаљен зелена и црвена лампица светле наизменично са фреквенцијом од 1Hz.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 6 ===&lt;br /&gt;
Мотор се пали притискањем старт и стоп дугмета истовремено а затим држањем старт дугмета 4с. Мотор се гаси притискањем стоп дугмета 5 пута. Док је мотор упаљен зелена и црвена лампица светле наизменично са фреквенцијом од 1Hz.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 7===&lt;br /&gt;
Уколико је прекидач померен у десну страну, црвена лампица светли три секунде, затим не светли једну секунду и тако у круг. Уколико се пет пута притисне црвени тастер док лампица сија, пали се зелена лампица. Када се притисне на зелени тастер док сија пали се мотор. Мотор, као и лампице, се гасе након што се прекидач врати у средину.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 8 ===&lt;br /&gt;
Мотор се пали држањем старт и стоп дугмета истовремено у трајању од 4с. Мотор се гаси притискањем старт дугмета 5 пута. Док је мотор упаљен црвена лампица светли са фреквенцијом од 1Hz. Зелена лампица се пали држањем старт дугмета у трајању од 2с док мотор ради.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 9 ===&lt;br /&gt;
Мотор се пали притискањем старт дугмета 4 пута а затим и стоп дугмета једном. Мотор се гаси притискањем старт дугмета 4 пута, свако притискање треба да траје 2с. Док је мотор упаљен зелена лампица светли 2с па не светли 1с. Омогућити да се све меморијске локације рестартују на 0 на почетку.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 10 ===&lt;br /&gt;
Мотор се пали са 7 наизменичних притисака старт и стоп дугмета. Уколико се исто дугме притисне два пута за редом ресетује се секвенца. Мотор се гаси држањем старт и стоп дугмета истовремено у трајању од 4с.&lt;br /&gt;
&lt;br /&gt;
== Друга лабораторијска вежба ==&lt;br /&gt;
=== Варијанта 1 ===&lt;br /&gt;
Направити да се пнеуматски клипови померају по следећој секвенци након што се на локацију M1.3 упише вредност 1:&lt;br /&gt;
# К1 скроз лево&lt;br /&gt;
# К3 лево до 40%&lt;br /&gt;
# Чекање пет секунди&lt;br /&gt;
# К3 десно до краја&lt;br /&gt;
# К1 десно&lt;br /&gt;
# Поновити претходну секвенцу опет&lt;br /&gt;
Неопходно је коришћење тајмера и бројача. Клипови К3 и К4 су аналогни. Потребно је клипове одржавати на ±10% од захтеване позиције.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 2 ===&lt;br /&gt;
Направити да се пнеуматски клипови померају по следећој секвенци:&lt;br /&gt;
# К4 лево до 40%&lt;br /&gt;
# Чекање шест секунди&lt;br /&gt;
# К2 скроз лево&lt;br /&gt;
# К4 скроз десно&lt;br /&gt;
# К2 скроз десно&lt;br /&gt;
# Поновити претходну секвенцу опет&lt;br /&gt;
Када се на меморијску локацију M1.3 упише вредност 1 извршавање секвенце се прекида и клипови се враћају у почетни положај. Неопходно је коришћење тајмера и бројача. Клипови К3 и К4 су аналогни. Потребно је клипове одржавати на ±10% од захтеване позиције.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 3 ===&lt;br /&gt;
Направити да се пнеуматски клипови померају по следећој секвенци након што се на локацију M4.2 упише вредност 1:&lt;br /&gt;
# К4 скроз лево&lt;br /&gt;
# К2 скроз лево&lt;br /&gt;
# К4 до 50%&lt;br /&gt;
# Чекање пет секунди&lt;br /&gt;
# К4 скроз десно&lt;br /&gt;
# К2 скроз десно&lt;br /&gt;
# Поновити претходну секвенцу још два пута&lt;br /&gt;
&lt;br /&gt;
Неопходно је коришћење тајмера и бројача. Клипови К3 и К4 су аналогни. Потребно је клипове одржавати на ±10% од захтеване позиције.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 4===&lt;br /&gt;
Направити да се пнеуматски клипови померају по следећој секвенци:&lt;br /&gt;
# К1 до 40%&lt;br /&gt;
# Чекање две секунде&lt;br /&gt;
# К1 и К3 скроз десно истовремено&lt;br /&gt;
# Поновити претходну секвенцу још три пута&lt;br /&gt;
# К1 скроз лево&lt;br /&gt;
# К3 скроз лево&lt;br /&gt;
&lt;br /&gt;
Неопходно је коришћење тајмера и бројача. Клипови К1 и К4 су аналогни. Потребно је клипове одржавати на ±15% од захтеване позиције.&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 5===&lt;br /&gt;
Направити да се пнеуматски клипови померају по следећој секвенци (првобитно је потребно поставити све клипове скроз лево истовремено):&lt;br /&gt;
# К1 до 70%&lt;br /&gt;
# К3 скроз десно&lt;br /&gt;
# Чекање три секунде&lt;br /&gt;
# К1 скроз лево&lt;br /&gt;
# К3 скроз лево&lt;br /&gt;
# Поновити претходну секвенцу још два пута&lt;br /&gt;
&lt;br /&gt;
Неопходно је коришћење тајмера и бројача. Клипови К1 и К4 су аналогни. Потребно је клипове одржавати на ±15% од захтеване позиције&lt;br /&gt;
&lt;br /&gt;
=== Варијанта 6 ===&lt;br /&gt;
Секвенца се стартује након што се на локацију M1.0 упише вредност 1.Секвенца траје 18 секунди након чега се сви клипови враћају у почетни положај. Док секвенца траје:&lt;br /&gt;
# К4 до 40% за све време трајања секвенце&lt;br /&gt;
# К2 скроз лево када се на локацију М1.2 упише вредност 1&lt;br /&gt;
# К3 скроз лево када се на локацију М1.3 упише вредност 1&lt;br /&gt;
&lt;br /&gt;
Неопходно је коришћење тајмера и бројача. Клипови К3 и К4 су аналогни. Потребно је клипове одржавати на ±10% од захтеване позиције.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Управљање у реалном времену]]&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;/div&gt;</summary>
		<author><name>DjoleRkc</name></author>
	</entry>
</feed>