Szövegfeldolgozás 3. Copyright, 1999 © Szlávi Péter Szlávi Péter

Slides:



Advertisements
Hasonló előadás
I. előadás.
Advertisements

Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Kódelmélet.
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
A táblázatkezelés alapjai 1.
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Egy f  R[x] polinom cS -beli helyettesítési értéke
Algoritmusok és adatszerkezetek 2 Újvári Zsuzsanna.
Gubicza József (GUJQAAI.ELTE)
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 10. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Sztringek.
Bevezetés a Java programozásba
Halmazok, relációk, függvények
Készítette: Pető László
A digitális számítás elmélete
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Differenciál számítás
6. SZÁMELMÉLET 6.1. Oszthatóság
Huffman Kódolás.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Készítette: Gergó Márton Konzulens: Engedy István 2009/2010 tavasz.
ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál
Problémás függvények : lokális optimalizáció nem használható Globális optimalizáció.
Lokális optimalizáció Feladat: f(x) lokális minimumának meghatározása 0.Adott egy kezdeti pont: x 0 1.Jelöljünk ki egy új x i pontot, ahol (lehetőleg)
Optimalizáció modell kalibrációja Adott az M modell, és p a paraméter vektora. Hogyan állítsuk be p -t hogy a modell kimenete az x bemenő adatokon a legjobban.
Információ, adat, jel, kód
Hernyák Zoltán Programozási Nyelvek II.
Brute Force algoritmus
I. előadás.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Copyright, 1999 © Szlávi Péter Szövegfeldolgozás 1.

Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Valószínűségszámítás II.
INFOÉRA 2006 Nagypontosságú aritmetika I.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Fejlesztések, változások a kérvény modulban. Részletfizetési kérvény változások Új rendszerparaméter: PU_RKERVENYEZETTKIRASBEFIZETES S zabályozza, hogy.
Algoritmusok és adatszerkezetek
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Összeállította: Gergely János
Geometriai feladatok programozása Geometriai programozás Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék 2010.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
KNUTH-MORRIS-PRATT ALGORITMUS (KMP) KÉSZÍTETTE: ZELNIK MÁRTON.
Nyilvános kulcsú titkosítás Digitális aláírás Üzenet pecsétek.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
A programozás módszertana. Monolitikus programozás Egyszerű feladatok - egyszerű programok Egy program – egy programozó Nincs belső struktúra, lineáris.
Nevezetes algoritmusok
Mediánok és rendezett minták
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Technológiai folyamatok optimalizálása
Alice, Bob és Carol A mai titkosítás hősei
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Algoritmusok és Adatszerkezetek I.
Algoritmus készítés.
INFOÉRA 2006 Szövegfeldolgozás III.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Strukturált és nem strukturált programok
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

Szövegfeldolgozás 3. Copyright, 1999 © Szlávi Péter Szlávi Péter 2019.01.03. Szövegfeldolgozás 3. Copyright, 1999 © Szlávi Péter Programozásmódszertan, 1999

Tartalomjegyzék 4. Szövegtípus speciális feladatai (folytatás) Szlávi Péter 2019.01.03. Tartalomjegyzék 4. Szövegtípus speciális feladatai (folytatás) 4.1. Szövegminta keresés 4.1.1. Eltolás a minta jelei alapján 4.1.2. Eltolás a szöveg jelei alapján 4.1.3. Keresés leképező függvénnyel 4.2. Szövegtitkosítás módszerei 4.2.1. Caesar-féle kódolás 4.2.2. Vignère-féle kódolás 4.2.3. Helyettesítő táblás kódolás 4.2.4. Blokk-permutáló kódolás 4.2.5. Nyilvános kulcsos (RSA) kódolás 4.3. Hiperszöveg-kezelés Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

Szlávi Péter 2019.01.03. 4.1. Szövegminta keresés A feladat: Hol kezdődik az s szövegben az sminta szöveg? Alapmegoldás: A keresés tétel és az eldöntés tételéből: siker:=Hamis; i:=1 [ahol tartunk az s-ben] Ciklus amíg iHossz(s)-Hossz(sminta)+1 és nem siker j:=1 [ahol tartunk az sminta-ban] Ciklus amíg jHossz(sminta) és Jele(sminta,j)=Jele(s,i+j-1) j:+1 Ciklus vége siker:=(j>Hossz(sminta)) Ha nem siker akkor i:+1 Ciklus vége A keresés+eldöntés PT12 szerinti „egybetranszformálása”. (Lásd: http://izzo.inf.elte.hu/~szlavi/ProgModsz/Progtran.pdf.) Ha s hossza: sH, és sminta hossza smH, akkor „nagyvonalú” (átlagos rossz eseteket alapul vevő) számítás szerint: sH/2 * smH/2, azaz sH*smH/4 hasonlítással jár egy sikeres keresés. A sikertelen legrosszabb esetében, amikor az sH-ban végigmegyünk és eközben a legkésőbb jövünk rá a nem-illeszkedésre: (sH-smH+1)*(smH-1) = sH*smH-smH2+smH-sH+smH-1. A probléma forrása, hogy az s egy-egy jelét többször is hasonlítja a minta más-más jelével. Programozásmódszertan, 1999 2019.01.03. Programozásmódszertan, 1999

4.1. Szövegminta keresés 4.1.1. Eltolás a minta jelei alapján Szlávi Péter 2019.01.03. 4.1. Szövegminta keresés 4.1.1. Eltolás a minta jelei alapján Probléma: nem veszi figyelembe a feladat specialitásait… ui.: … a „tudhatná”-kat … „Meggondolatlan” lépések: 1  2, 3  4 ui. előrelátható a kudarc Jelmagyarázat: karakterhasonlítás egyezéssel; illetve ütközéssel. Hasonlítások száma konkrétan: 3+1+2+1+2+3 = 12; a jóslás szerint: 9*3/4~7. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1. Szövegminta keresés 4.1.1. Eltolás a minta jelei alapján Szlávi Péter 2019.01.03. 4.1. Szövegminta keresés 4.1.1. Eltolás a minta jelei alapján Egy „gondolkodó” algoritmus lépései: Így a korábbi 12 hasonlítás helyett 10-et tenne. Megoldás: eltolás vektor, amely megadja, hogy az smintabeli i. karakter nem egyezésekor mennyivel léptethető a keresett minta. Jelmagyarázat: karakterhasonlítás egyezéssel; illetve ütközéssel. Az 12 tudhatná előreutalás KNP-módszerre, a 34 pedig inkább a BM-módszerre… Hasonlítások száma: 3+2+2+3 = 10 Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) A módosított algoritmus: Pl. a korábbi ‘aba’ mintához a (1,1,2) Eltolás vektor jónak tű-nik… vagy az ‘aaaaaa’-hez kitűnő lenne az (1,2,3,4,5,6)... siker:=Hamis; i:=1 [i:ahol tartunk az s-ben] Ciklus amíg iHossz(s)-Hossz(sminta)+1 és nem siker j:=1 [j:ahol tartunk az sminta-ban] Ciklus amíg jHossz(sminta) és Jele(sminta,j)=Jele(s,i+j-1) j:+1 Ciklus vége siker:=(j>Hossz(sminta)) Ha nem siker akkor i:+Eltolás(j) Ciklus vége Itt az várható, hogy a fölösleges, többszörös hasonlításokat elkerüljük, vagyis a hasonlítások száma nagyjából az s hosszával arányos. A korábbival összhangban lévő számítás alapján várható hasonlításszám: sH/2. Az előbbi „naivhoz” képest smH/2-szeres a nyereség, vagyis annál nagyobb, minél hosszabb a minta. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) A továbbiak legfontosabb felfedezése: a hasonlítás visszafelé történő megszervezése! Knuth-Morris-Pratt algoritmusa: siker:=Hamis; i:=1 [i:ahol tartunk az s-ben] Ciklus amíg iHossz(s)-Hossz(sminta)+1 és nem siker j:=Hossz(sminta) [j:ahol tartunk az sminta-ban] Ciklus amíg 1j és Jele(sminta,j)=Jele(s,i+j-1) j:-1 Ciklus vége siker:=(j=0) Ha nem siker akkor i:+Eltolás(j) Ciklus vége Figyelem az alábbi megjegyzés „általánosságban” értendő (esetleg a következőkben tárgyalt BM-módszerre) és –sajnos– nem vonatkozni a KMP-módszerre! A „visszafelé-ség” nyeresége abban áll, hogy így minél hamarabb kiderül egy adott pozícióban a minta illeszthetetlensége, annál több jel maradhat ki az összehasonlításból. Szélsőségesen pl. lehetséges az, hogy egy adott minta csak utolsó jelét vetjük össze a sorozat egy jelével, s máris odébb toljuk a mintát teljes hosszával (mondván, hogy a szöveg olyan jelével történt az összehasonlítás, amely a mintában egyáltalán nincsen). Ilyenkor a szükséges hasonlításszám, akár sM/smH-ra is lecsökkenhet. Az „alap” algoritmushoz képesti hatékonyságnövekedés: smH2-szeres. (Pl. 10 hosszú minta esetén 100-szoros.) Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) Az Eltolás vektor generálása: Alapeset: ha a keresett minta minden eleme különböző, a léptetés értéke a hátulról számított pozícióval egyezik meg. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) Közel ismétlődő jelek esete: ha van közeli ismétlődés a mintában, akkor ez nem jelent különbséget az alapesettől. Az eltolási vektor elemei hátulról monoton növekedőek. (És nem csak az eddig megszerzett tapasztalatok súgják!) A monotonitás: nyilvánvaló! Ui. a monotonitás megsértése egyet jelentene azzal, hogy egy korábban meghozott, akkor garantáltan jó döntésünket vonnánk vissza! Biztos, hogy ha kevesebbel tolnánk el, mint egy hátrább lévő eltolási érték előírja, akkor amiatt garantáltan ütközést produkálnánk a hátulsó jelek valamelyikénél. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) Távol ismétlődő jelek esete: másrészt (?=5) ha az ismétlődő jel távolsága nagyobb, mint az első azonos jel pozíciószáma, akkor vagy az ismétlődő jel pozíciószáma lesz a léptetési érték, vagy a kettejük pozíciószámának különbsége. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.1. Eltolás a minta jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.1. Eltolás a minta jelei alapján (folytatás) Típus EVektor=Tömb(1..MaxHossz:Egész) Az algoritmusa: Eljárás EltolásVektor(Konstans minta: Szöveg, Változó ev: EVektor): Változó n,i:PozEgész n:=Hossz(minta); ev(n):=1 Ciklus i=n-1-től 1-ig -1-esével [ismétlődéskeresés:] ev(i):=ev(i+1) [monoton kezdés  a túl közeli ismétlődés nem érdekes] Ciklus amíg i+ev(i)n és Jele(minta,i)Jele(minta,i+ev(i)) ev(i):+1 Ciklus vége Ciklus vége Eljárás vége. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1. Szövegminta keresés 4.1.2. Eltolás a szöveg jelei alapján Szlávi Péter 2019.01.03. 4.1. Szövegminta keresés 4.1.2. Eltolás a szöveg jelei alapján Boyer-Moore ötlete: Ha a minta helyett a szöveg jeleihez rendelünk eltolási érté-keket, akkor –elvben– az addig elvégzett hasonlítás számnál nagyobb ugrásra is mód lehet. Ui. legyen Változó Eltolás:EVektor N-i, ha Jele(minta,i)=c és cVége(minta,i+1) Eltolás(c):= N, ha cminta ahol N:=Hossz(minta) Típus EVektor=Tömb(1..MaxHossz:Egész) EVektor=Tömb(Karakter:Egész) { ad Eltolás vektor definíciója: A vektort értelmezhetjük úgy, hogy ennyi jellel lehet továbbléptetni, amikor a minta utolsó jele az adott s-beli jellel ütközik. Ez után érthető, hogy a minta utolsó jeléhez miért 0 tartozik. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.2. Eltolás a szöveg jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.2. Eltolás a szöveg jelei alapján (folytatás) 1. példa: s : ’abcadabcab’; sminta : ’abcab’ Eltolásvektor: ’a’1; ’b’0; ’c’2; más jel5 2. példa: s : ’abcccabcab’; sminta : ’abcab’ ad 2. példa: A c-nél ütközés után az előírt 2-vel elmozgatás után semmi garancia nincs, hogy a minta vége egyezni fog… hiszen nem a minta ütköző jeléből indultunk ki, s nem vettük figyelembe, hogy a minta mely jelével; ezért további korrekciós léptetést végzünk úgy, hogy az utolsó jel s-beli párja szerint, gondolkodás nélkül odébb toljuk a mintát. Ez megerősíti az eddig „furcsa” 0 értékét az utolsó jel lépésszámának: ha nem kell odébb tolni, akkor a 0-val léptetést éppen ezt eredményezi. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.2. Eltolás a szöveg jelei alapján (folytatás) Szlávi Péter 2019.01.03. 4.1.2. Eltolás a szöveg jelei alapján (folytatás) Az algoritmusa: siker:=Hamis; m:=Hossz(sminta); i:=m Szinkronizálás(i) Ciklus amíg [iHossz(s) és] i+Eltolás(Jele(s,i))Hossz(s) és nem siker j:=m; siker:=(Jele(sminta,j)=Jele(s,i)) Ciklus amíg j>1 és siker j:-1; i:-1; siker:=(Jele(sminta,j)=Jele(s,i)) Ciklus vége Ha nem siker akkor Ha Eltolás(Jele(s,i))>m-j+1 akkor i:+Eltolás(Jele(s,i)) különben i:+m-j+1 Szinkronizálás(i) Elágazás vége Ciklus vége [sikerminta=s(i..i+m-1)] ad „Eltolás(Jele(s,i))>m-j+1”: Az „előírt” eltolás és a hátulról vett sorszám (azaz a már vizsgált mintahossz) közül a nagyobbik… Hiszen mindkettő azt állítja, így legalább annyival léptethető, ergo a nagyobbal léptetendő! ad gomb: rákattintva, le kell tölteni és kicsomagolni a SzovKer.zip-et. Kipróbálni a Keres.exe-t 1. a felkínált opcionális paraméterekkel, majd 2. a keresendő szöveg legyen megtalálhatatlan, esetleg még 3. a keresendő egy megtalálható, de rövid. Összehasonlítandó a kétféle keresés lépésszáma! Eljárás Szinkronizálás(Változó i:Egész): Ciklus amíg iHossz(s) és Eltolás(Jele(s,i))0 i:+Eltolás(Jele(s,i)) Ciklus vége Eljárás vége. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1. Szövegminta keresés 4.1.3. Keresés leképező függvénnyel Szlávi Péter 2019.01.03. 4.1. Szövegminta keresés 4.1.3. Keresés leképező függvénnyel Rabin-Karp ötlete: a mintát tekintsük d-alapú számrendszerbeli számként, ahol d a szövegben előforduló jelféleségek száma. Legyen a minta i. jeléhez rendelt szám – sm(i):=Kód(Jele(minta,i)) akkor a mintához rendelt szám – x:=sm(1)*dm-1+sm(2)*dm-2+ …+sm(m-1)*d+sm(m) A szövegben is képezve ugyanennyi jelből egy számot: y:=sm(i)*dm-1+sm(i+1)*dm-2+…+sm(i+m-2)*d+sm(i+m-1), s e két számot kell összehasonlítani. Ha különböznek, akkor az eggyel odébb léptetés utáni új szám könnyen adódik: y’:=(y-sm(i)*dm-1)*d+s(i+m) [0..d) A Kód fv. speciális (a szokásos, ugyanilyen nevűtől eltérő) fv. Hiszen most csak d-féle jelhez kell folyamatosan kódértéket rendelnie! Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.3. Keresés leképező függvénnyel (folytatás) Szlávi Péter 2019.01.03. 4.1.3. Keresés leképező függvénnyel (folytatás) Javítása: Hogy ne kelljen nagypontosságú aritmetikával küzdeni, a szám-hozzárendelést Mod q végezzük; ahol q egy kellően nagy, de még „kezelhető” nagyságú prím szám. Következmény: a szám-azonosság is csak „modulo” értendő, azaz még a karakteres azonosság ellenőrizendő. Algoritmus: sminta s1:=0 Ciklus i=1-től m-ig s1:=(s1*d+Kód(Jele(sminta,i))) Mod q Ciklus vége s2:=0 Ciklus i=1-től m-ig s2:=(s2*d+Kód(Jele(s,i))) Mod q Ciklus vége Konstans q:PozEgész(33554393) d:PozEgész(26) Változó m,s1,s2,dh:PozEgész m:=Hossz(sminta); dh:=1 Ciklus i=1-től m-1-ig dh:=(d*dh) Mod q Ciklus vége (a+b) Mod q  ((a Mod q)+b) Mod q Az első ciklus célja: dhm-1 mod q kiszámítása. dm-1 s Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.1.3. Keresés leképező függvénnyel (folytatás) Szlávi Péter 2019.01.03. 4.1.3. Keresés leképező függvénnyel (folytatás) i:=1 Ciklus amíg iHossz(s)-m és s1s2 s2:=(s2+d*q-Kód(Jele(s,i))*dh) Mod q [s2 pozitív maradjon] s2:=(s2*d+Kód(Jele(s,i+m))) Mod q i:+1 Ciklus vége siker:=(s1=s2) Eddig tehát a siker megadja, hogy lehet, hogy itt megvan (siker=Igaz), vagy biztosan nincs (siker=Hamis). Ha lehet, hogy megvan, akkor még a karakteres ellenőrzés hátra- van, és nem azonosság esetén folytatódik ettől a ponttól a keresés az előbbiek szerint. Az s2 kiszámítása két lépésben: hogy ne csorduljon túl. A +dq, hogy pozitív legyen, ami az s2 „modul q” volta miatt nem lenne garantált. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.1. Caesar-féle kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.1. Caesar-féle kódolás Caesar ötlete: a jelek eltolása az abc-ben rögzített k lépéssel. Pl.: ha abc:={‘A’,’B’, … ,‘Z’}; k:=3 akkor tabc={‘D’,‘E’, …,‘C’} és s:=‘MARCIUSIDUSA’   ts=‘PDUFLXVLGXVD’ PDUFLXVLGXVD 26-féle „kulcs” lehet A B C D E F … X Y Z A B C D E F … X Y Z Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.2. Vignère-féle kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.2. Vignère-féle kódolás Vignère ötlete: a jelek eltolása az abc-ben rögzített K kulcs-szó alap-ján számolt lépéssel. Az eltolás szabálya: Pl.: ha abc:={‘A’, ‘B’, … ‘Z’} K:=‘CAESAR’ akkor s:=‘MARCIUSIDUSA’ ++++++++++++ CAESARCAESAR   ts=‘OAVUIMUIHNSR’ OAVUIMUIHNSR JEL LÉPÉS ‘A’  0 ‘B’  1 … ‘Z’  25 „Vignere = Vigenere” a helyesírása változó az irodalomban ‘M’+’C’ = CiklikusLéptetés(‘M’,Lépés(‘C’)) A „megfejthetetlenségről”: a próbaprogram (Vignere-féle) kulcsa legyen egy jel, majd nézzük meg a betűstatisztikát, és következtessünk a próbaprogram kulcsa most legyen hosszabb (pl. CAESAR), majd nézzük meg a betűstatisztikát, és következtessünk Megjegyzés: a futás és a dia közötti eltérés magyarázata az, hogy a dián nagybetűs az abc, míg a program kisbetűket is ismer és megkülönböztet. ‘M’+‘C’= = Shift(‘M’,2)= =‘O’ Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.3. Helyettesítő táblás kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.3. Helyettesítő táblás kódolás Ötlet: a jelek helyettesítése egy rögzített („szabálytalanul” feltöltött) táblázat alapján. Pl.: ha abc:={‘A’, ‘B’, ‘C’, … ‘Z’} HT:Tömb(abc:abc)(‘Q’, ‘W’, ‘E’,…‘M’) akkor tabc={‘Q’, ‘W’, … ‘M’} és s:=‘MARCIUSIDUSA’   ts=‘DQKEOXLORXLQ’ DQKEOXLORXLQ JEL JEL’ ‘A’  ‘Q’ ‘B’  ‘W’ … Ez az „összevisszaság” némileg nehezíti a kalózkodó dolgát. A kulcsok száma: 26!~1028, ez azonban csalóka. A jelgyakoriság egy hosszú szöveg esetében sokat elárul. ‘M’HT(‘M’)=‘D’ Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.4. Blokk-permutáló kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.4. Blokk-permutáló kódolás Ötlet: rögzített számú jelből álló blokkok kódolása úgy, hogy egy előre meghatározott séma szerint cserél-getjük meg a blokk jeleit. Pl.: ha abc:={‘A’, ‘B’, … ‘Z’}; k:=3 perm:Tömb(1..k:1..k)(2,3,1) akkor s:=‘MARCIUSIDUSA’      ts=‘ARMIUCIDSSAU’ ARMIUCIDSSAU 1 2 3 2 3 1 ‘MAR’Jele(‘MAR’,perm(1))+…+Jele(‘MAR’,perm(k)) Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás RSA eredete: Rivest-Shamir-Adleman, 1978 Ötlet: külön k kulcs a kódoláshoz, ill. d a dekódoláshoz; k – nyilvános kulcs, akiktől várom az üzeneteket d – titkos kulcs, csak én ismerem. Részletek: Kis Fermat-tétel: ha a,pN: p prím és (a,p)=1  ap-1  1 (mod p) más szóval: …  p | ap-1-1 ad RSA eredete: http://hu.wikipedia.org/wiki/RSA ad Kis Fermat-tétel: http://hu.wikipedia.org/wiki/Kis_Fermat-t%C3%A9tel (a,p)=a és p legnagyobb közös osztója Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Következmény: ha p,qN: p,q prím ((p,q)=1)  p | (a(q-1))(p-1)-1 és q | (a(p-1))(q-1)-1  ((a(q-1))(p-1)=(a(p-1))(q-1)=a(p-1)(q-1)) pq | a(p-1)(q-1)-1  (a-val szorozva) a(p-1)(q-1)+1  a (mod pq) Legyen a továbbiakban: n=p*q és  ae*f  a (mod n) e*f=(p-1)*(q-1)+1 } Ha (p,q)=1, akkor (aq-1,p)=1 és (ap-1,q)=1; így alkalmazható rájuk a Kis Fermat-tétel. Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Ötlet: Ha k=(e,n) a nyilvános kulcs, és d=(f,n) titkos kulcs, akkor az s (<n) „szöveg” kódolása: t=se Mod n; a t dekódolása: s=tf Mod n. Pl.: ha p:=59, q:=47  n:=2773; e:=17, f:=157 abc:={‘A’, ‘B’, … ‘Z’}; abcKód:Tömb(abc:0..25)(0,1,…,25) akkor s:=‘MARCIUSIDUSA’       120017020820200803222000 A tétel miatt: s  t=se Mod n t  (se Mod n)f Mod n= =se*f Mod n=s Az n=2773 miatt: 4-jegyű számmal dolgozunk, azaz 2 betűs blokkokkal Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás Szlávi Péter 2019.01.03. 4.2. Szövegtitkosítás 4.2.5. Nyilvános kulcsos kódolás 120017020820200803222000       14440052… ‘O?A?…’  t=…egy nem „karakteresíthető” kódsorozat… … és a dekódolás:   12001702… Hogyan választandó ki az n, e és f? L.: p,q nagy (véletlen) prím  n=p*q L.: f nagy (véletlen) prím: f<n ((f,p-1)=1, (f,q-1)=1)  e: e*f = (p-1)*(q-1)+1 120017 Mod 2773=1444 … 1444157 Mod 2773=1200 … Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.3. Hiperszöveg-kezelés A „hiper”-ség tulajdonság Tartalom és forma Szlávi Péter 2019.01.03. 4.3. Hiperszöveg-kezelés A „hiper”-ség tulajdonság Általában: pl. hipermátrix, hiperautomata… valami rekurzívan strukturált szerkezet A hipertext (hiperszöveg) = hiperdokumentum, amelyben egyes rész-szövegek bizonyos tartalmi és kezelési „önálló-sággal” bírnak Tartalom és forma Forma (a felhasználó szempontjából): Megjelenés – hogyan válik el a „normál” szövegtől a „hiperül” kezelendő rész? Kezelés – hogyan választható ki egy hiperszöveg? Ismert példák: Böngészők – GUI-s világban Help-fájlok – GUI-t megelőző, konzolos világban Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.3. Hiperszöveg-kezelés Ábrázolás Szlávi Péter 2019.01.03. 4.3. Hiperszöveg-kezelés Tartalom (a fejlesztő szempontjából): Ábrázolás + Műveletek Ábrázolás Absztrakt szinten Hivatkozó szöveg (link, „ugrópont”) - (kísérő)szöveg + hivatkozás Hivatkozott szöveg - egy pont = pontdefiníció - egy tartomány = „tartománykezdet+tartományvég”-definíció valamely dokumentumban Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.3. Hiperszöveg-kezelés Konkrét szinten Szlávi Péter 2019.01.03. 4.3. Hiperszöveg-kezelés Konkrét szinten Kulcs-szavas (=tag-es) - olvasható, mnemonikus (pl. HTML); könnyen kiterjeszthető Bináris - fix hosszan, binárisan kódolt; speciális kód(okat) igényel <a href="#info" target="jobb">napi információk</a> Kód: 0 cc cc db "i" "n" "f" "o" Byte: … i. i+1. i+2. i+3. i+4. i+5. i+6. i+7. cccc=ugráscím, db=kísérő szöveg hossza Példaként l.: public_html\publikaciok.html Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999

4.3. Hiperszöveg-kezelés Műveletek Inputfigyelés Szövegfókuszálás Szlávi Péter 2019.01.03. 4.3. Hiperszöveg-kezelés Műveletek Inputfigyelés = eseményfigyelés (GUI) = billentyűfigyelés („DOS-os rendszerben”) Szövegfókuszálás Ugrópont-keresés (pl. tag-eseknél) = szövegkeresés Direktpozícionálás (pl. binárisoknál) = ugrópontra ugrás (feltéve, hogy a fájl típusa ezt megengedi) Programozásmódszertan 2019.01.03. Programozásmódszertan, 1999