Algoritmas: duomenų kodavimas (Laboratorinis darbas)

Paprastas duomenų kodavimo algoritmas

(laboratorinis darbas Nr.1)

Užduotis: Parašyti duomenis užkoduojančią ir atkoduojančią programą. Pradinius ir galutinius duomenis saugoti failuose.

Algoritmas: Yra sudaryta koduojamų simbolių abėcėlė. Iš viso 64 simboliai, kiekvienas simbolis turi savo pozijicą. Užkoduojama ir atkoduojama pagal įvestą raktą, kuris sudarytas iš skaitmenų (0..9). Rakto ilgis gali būti iki 20 simbolių.

Užkodavimo žingsniai:

1. i=1.

2. Imamas rakto simbolis ri.

3. Imamas simbolis, kurį reikia užkoduoti, ir surandama jo pozicija abėcėlėje p.

4. atliekama operacija: k=(p XOR ri)+ 6*(ri+1).

5. Jeigu k>63, tai k=k mod 64.

6. Gauta reikšmė k atitinka užkoduoto simbolio poziciją aabėcėlėje.

7. Skaičiuojama i=i+1, jeigu i>n, tai i=0 (n rakto ilgis).

8. Atliekamas 2 punktas, kol visi simboliai bus užkoduoti.

Atkodavimo žingsniai:

1. i=1.

2. Imamas rakto simbolis ri.

3. Imamas simbolis, kurį reikia atkoduoti, ir surandama jo pozicija abėcėlėje k.

4. Atliekama operacija: p=k-6*( ri+1).

5. Jeigu p<0, tai p=p+64.

6. p=p XOR ri.

7. Gauta reikšmė p atitinka atkoduoto simbolio poziciją abėcėlėje.

9. Skaičiuojama i=i+1, jeigu i>n, tai i=0 (n rakto ilgis).

10. Atliekamas 2 punktas, kol visi simboliai bus atkoduoti.

Programos ypatumai: Užkoduojant didžiosios raidės pakeičiamos į mažąsias ir atkoduojant į didžiąsias jos nebeatstatomos. Jeigu užkoduojamo simbolio abėcėlėje nėra, jis paliekamas nnepakeistas.

Trūkumai: Kadangi mano programoje į abėcėlę neįvestas eilutės pabaigos simbolis, tai jis nekeičiamas ir užkoduotame tekste galima išskirti pastraipas (jeigu tai yra tekstinė informacija).

“Nulaužimo” galimybė: Jeigu raktas pakankamai ilgas, tai atspėti kas užkoduota yra pakankamai sunku, nes ta pati raidė sskirtingais atvejais keičiama į skirtingus simbolius. Be to nėra žinomas abėcėlės išdėstymas.

Neužkoduoto teksto pvz.:

Objekto savininko sàvoka Windows NT sistemoje

Objekto savininko sàvoka yra ávesta dël keletos prieþasèiø. Viena ið jø yra siekimas apsaugoti informacijà nuo asmenø, turinèiø administratoriaus slaptaþodá. Pavyzdþiui administratorius nori perþiûrëti kokià nors vartotojo informacijà neturëdamas tam teisiø. O norëdamas nurodyti sau atitinkamas teises, tam, kad galëtø perþiûrëti failà, jis turi tapti objekto savininku. Taèiau, tapæs objekto savininku jis negali jo perduoti kitam asmeniui. Todël ðis nelegalus priëjimas prie informacijos gali bûti pastebëtas.

Kita prieþastis yra ta, kad vartotojas per klaidà gali iðtrinti visas priëjimo ir naudojimosi objektu

teises. Bet net ir tokiu atveju savininkas galës prieiti prie savo objekto.

Užkoduotas tekstas:

/;h;i5/>þ+s*;dkql9+ue8i,2by%)1″më%p9+dþ4(=/fv

8;(.ig8>xusy%d/(lë>u3/iræg%u>;6(xx!ë:vq2ivw(5/më9n*.?r>t*m<ë6d:;!ë1 9–ë2n,2my;i*:!þæ!0+!f)l5?>y%+1*jr=d(k>k5l9uml;yu0>g5n*;ty >, jy%dxxnr4l%?!f>>x)!b4!-/);ë>0usi7)-?oyæ!;:dk1m5*!g8n*%më%l%?>b;n-?,a?p*2icqds2ycg;dx?-ææl9;la?),:!þæy4*lz2p*2mr5>,xdg1ywujr>>5.dþ;m72prx“9(!zæ*,)vg >0.ns1,%jpyæ+,?h-á>(?më4o%?>g+k5?>c/f:(pcæm,qdk1yw%<ë4!r?!fá>5uk.>>1rfvqp12mr6d/?yn5>(?më%(!uhyæf12kv<)4/pyæi*x!læ!x:(k1o*3>g8)o)>:1m9;(m;*,)oþæk%?vh1j,+>b<