Ways, hogy titkosítani és visszafejteni a szöveget

Története kriptográfia lényegében egyenlő éves kor felett a történelem írás, mert az Advent az írás szükség van, hogy dolgozzon ki különféle módon, hogy adatokat tároljon olyan formában, hogy csak azon a bizonyos kör számára. BC már megalkotta a „Caesar rejtjel”, ami az volt, hogy cserélje ki minden karakter a szöveg a szimbólum bizonyos távolságban ez az ábécé egy fix pozíciók száma. Cryptanalysts arra keresi a módját, hogy megfejtse a kódolt üzeneteket. Cryptographers (kódolók) és cryptanalysts (cryptanalysts) voltak állandó konfrontáció: az első folyamatosan új kódolást és első látásra megközelíthetetlen cryptanalysts, és az utóbbi megtalálták a módját, hogy megfejtse a rejtett üzeneteket.

Modern kriptográfia képez önálló kutatási terület metszéspontjában matematika és számítástechnika. Gyakorlati alkalmazása kriptográfiai vált szerves része a modern élet - annak alkalmazása az iparban, mint az e-kereskedelem, az elektronikus dokumentumkezelés (beleértve a digitális aláírás), a távközlés és a többiek.

Sok különböző módon titkosítja az adatokat. A cél ebben a laborban, hogy tanulmányozza a szoftver, amely végrehajtja a módszerek a titkosítás és dekódolás szöveg Pascal háromszöget eljárás Gronsfelda és a mátrix és tárolja a titkosítási eredmények (a kódolt karakterek és azok sorrendjét), valamint tájékoztatás a titkosítási módszer a bináris fájl.

Algoritmusok titkosítás és dekódolás

Szerint a Pascal-háromszög

Pascal háromszöget - aritmetikai egyenlő szárú háromszög (4.1 ábra), kialakítva a binomiális együtthatók:

A Pascal-háromszög tetején és oldalán a fajlagos költség. Mindegyik szám összege a két szám fölé. Sorok háromszög szimmetrikus egy függőleges tengely körül. Továbbra háromszög lehet végtelen.

A titkosítási szerint történik a következő algoritmus:

Állítás kiosztott egy másik szót;

5: 1 5 10 10 5 1

6: 1 6 15 20 15 6 1

7: 1 7 21 35 35 21 7 1

8: 1 8 28 56 70 56 28 8 1

9: 1 9 36 84 126 126 84 36 9 1

10: 1 10 45 120 210 252 210 120 45 10 1

11: 1 11 55 165 330 462 462 330 165 55 11 1

12: 1 12 66 220 495 792 924 792 495 220 66 12 1

13: 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1

4.1 ábra - az első 15 sorban Pascal háromszög.

1. A sor Pascal háromszög választjuk számos megegyező számú betűket;

2. K-edik írni az eredeti szó helyébe a levelet bizonyos távolságban a kezdeti betűk a megadott szám a k-edik oszlopa a kiválasztott sor Pascal háromszög (a számlálás készül az óramutató járásával megegyező irányban, amint azt a 4.2 ábra).

A B C D E F G H

H D X F T Y C P

4.2 ábra - rendszer referencia

dekódoló algoritmus csak abban különbözik az irányt jelzet: ez lesz a fordított, azaz a járásával ellentétes irányba.

Azonosító Gronsfelda - bonyolult helyettesítő rejtjel egy módosított változatát Caesar titkosító numerikus billentyűt. Itt az eredeti üzenetet írt betűk számok numerikus billentyűt. Ha a kulcs rövidebb az üzenet, a rekord ciklikusan ismétlődik. Ellentétben Caesar rejtjel, ahol a titkosított levél számít egy harmadik ABC sorrendben, itt van kiválasztva a levél ábécé ellensúlyozza a megfelelő számgombot.

A mátrix Vigenère

Vigenère mátrix ábrán látható 4.3. Hivatkozással a Caesar rejtjel, minden egyes levél titkosítva lenne csúsztatható három sor (három műszakban), azaz Egy válna D, B válna E, és így tovább Itt a váltás függ fő karakterek.

4.3 ábra - Mátrix Vigenère

A titkosítás az alábbiak szerint: a mátrix keresett Vigenère oszlop megfelelő forrás szöveget a levél, akkor a húr a megfelelő betűt a kulcsot és a metszésvonaluknál lesz megfelelő betű rejtjelezett.

Alatt dekódolás, a húr az első karakter a megfelelő kulcsszót, és ebben a sorban megkeresi az első karakter a rejtjelezett. Az oszlop, amely az utóbbi megfelel az első karakter a forrás szöveget. A következő karakterek rejtjelezett visszafejtése hasonló módon.

Ha a betűk A-tól Z-ig megfelel a számok 1-32 (nincs betű E), a titkosítás és dekódolás a Vigenère mátrix lehet írott formában a képletek, illetve:

ahol - a levelet a rejtjelezett - a levél az eredeti szöveg - a betű gombját.

Választás, elhelyezés és beállítás komponens tulajdonságait.

Kódok osztályok, függvények és eseménykezelőkkel

1. Ajánlott alkalmazás interfész kell felelniük az alábbi követelményeknek:

· Interface legyen könnyen használható és könnyen használható;

· Interfész meg kell felelnie az egyetemesség elvét, ami azt jelenti, fenntartása alapvető építési szabályokat a felület jellemző főbb párbeszéd rendszerek feltételezve szabályozás egységességét, az egységesség rendeltetési elemek;

· Interfész képességek kell obnspechivat legkevesebb fizikai manipulációkat (kívánjuk kizárni a felesleges átmenet).

2. Mentse el a fő formája a modul neve LR_4, és a projekt - elemzi PR_LR_4. A fő formája az alkalmazás ábrán látható 4.4. A Caption tulajdonsága a fő formája rögzített titkosítás / visszafejtés meg egy érvényes magyar BETŰKKEL ÉS elválasztó karaktert „_”. A főmenü egy szakaszt fájlt (alkategóriák Nyílt forráskód. Nyissa meg a rejtjelezett. Exit) szakasza Operations (alfejezetek elindulni. Clearing kitölteni) és a Súgó részben (alfejezet Mintegy). Mert részterületet tisztítása Enabled tulajdonság hamis.

Ways, hogy titkosítani és visszafejteni a szöveget

4.4 ábra - a fő formája a végén a tervezési

3. A leginkább használt menüparancsainak (Kilépés. Inicializálás. Clearing kitölteni) duplikált a műszerfalon található a főmenüben. Ott egyszerűen használható a tervezési eszköztár. Ez egy egyszerű panel Panel1 (Home Standard) Bare Caption tulajdonság, amelyre a három gomb feltöltött SpeedButton1,2,3 (Advanced oldal). Ketten kapnak értelmes neveket: sbtnInit (SpeedButton2) sbtnClear (SpeedButton3) (lásd fejlécfájlba LR_4.h fő formája modult.). Ikonok (képek) vannak elhelyezve a gombok a Glyph ingatlan rendre dooropen fájlokat. ellenőrizni. egyértelmű a mappa ... Program Files \ Common Files \ Borland Shared \ Images \ gombok. Az ingatlan Tipp felsorolt ​​gombok sorrendben eszköztippekben kimenet. inicializálás, az elszámolási területeken. A ShowHint tulajdon - igaz. Mert SpeedButton3 gomb törlése (mezők) HelpType ingatlan értékét szállított htKeyword (teljes üzemmód gyors).

4. Transzfer a forma (Oldal beszélgetés) alkatrészek és SaveDialog1 OpenDialog1, de az oldalról Standard - alkatrész PopupMenu1. Ha duplán kattint egy komponens PopupMenu1 megy a menü tervező (ablak Form1-> PopupMenu1), és részei a Mentés és Mentés másként.

5. A többi a fő formája van osztva három, megközelítőleg egyenlő részre komponensek - panelek GroupBox1,2,3 (Normál oldal). A Caption tulajdonsága panelek megfelelően: Pascal-háromszög. Gronsfelda módszer. Szerint a mátrix.

6. GroupBox1 panel tartalmaz két Label1,2 címke (az eredeti szöveg. A kódolt szöveg), két komponenst Memo1,2 Button1,2 és két gomb (normál oldal) feliratos (titkosítás. Dekódolás). Meghatározza a környezet (Name tulajdonság értéke) Memo1, MeMo2 helyébe értelmes nevek: TextPascal. CodedTextPascal (lásd. LR_4.h). Az ingatlan PopupMenu Memo1 alkatrész rögzített értékének PopupMenu1. amelyek lehetővé teszik a Memo1 azonos, vagy ahhoz a forráskódot Mindhárom módszer titkosítást. Meghatározza a környezet nevét (az érték a neve) Button1. Button2 helyébe értelmes - btnEncryptP. btnDecryptP. és az Enabled tulajdonság értéke hamis.

7. GroupBox2 panel három védjegyek Label3,4,5 (kód (3-8 számjegy), eredeti. Rejtjelezett), három komponensű Memo3,4,5 (előre beállított nevek közepes helyébe edtKeyG. TextG. CodedTextG) és két Button3,4 gombok (megadott nevek helyébe környezet btnEncryptG btnDecryptG Enabled tulajdonság - .. false).

8. GroupBox3 panel három védjegyek Label6,7,8 (Key (betűk), az eredeti. Rejtjelezett), három komponensű Memo6,7,8 (előre beállított nevek közepes helyébe edtKeyM. TextM. CodedTextM) és két button5 gombok 6 (adott környezetben nevek helyébe btnEncryptM btnDecryptM Enabled tulajdonság - .. false).

Ways, hogy titkosítani és visszafejteni a szöveget

4.5 ábra - egy másik formája a „Körülbelül”

Ways, hogy titkosítani és visszafejteni a szöveget

4.6 ábra - a fő formája a vizsgálati eredmények

Ways, hogy titkosítani és visszafejteni a szöveget

(Az elején a projekt szerkezet)

Ways, hogy titkosítani és visszafejteni a szöveget

(A projekt folytatása szerkezet)

Ways, hogy titkosítani és visszafejteni a szöveget

(End of the Project)

11. A fejléc modul fő main.h

// osztály kódolás / dekódolás szöveg

char * szöveget; // forráskód

char * codedtext; // rejtjelezett

int ** Ptriangle; // Pascal háromszöget

int keyG [9]; // a kulcs rejtjeles Gronsfelda, egy nulla byte -

char * keyM; // a kulcs titkosításához mátrix

void SetText (char * szöveget); // állítsa az eredeti szöveg

char * GetText (); // a forráskód

void SetCodedText (char * szöveget); // állítsa a rejtjelezett

char * GetCodedText (); // kap a rejtjelezett

void SetKeyG (char * strkey); // állítsa a gombot a módszer Gronsfelda

void SetKeyM (char * strkey); // állítsa be a titkosítási kulcsot egy mátrix

int TextLen (); // kap a hossza a forrás szöveg

int CodedTextLen (); // kap hosszú rejtjelezett

void EncryptP (); // titkosítani Pascal háromszög

void EncryptM (); // titkosítja a mátrix

érvényteleníti EncryptG (); // eljárás titkosításához Gronsfelda

érvényteleníti DecryptP (); // visszafejteni Pascal háromszög

érvényteleníti DecryptM (); // dekódolni a mátrix

érvényteleníti DecryptG (); // visszafejteni módszer Gronsfelda

> * A; // mutató objektumot

12. A végrehajtás fájl main.cpp főmodult

érvényteleníti __fastcall SpeedButton1Click (TObject * feladó);

érvényteleníti __fastcall N6Click (TObject * feladó);

érvényteleníti __fastcall N9Click (TObject * feladó);

érvényteleníti __fastcall sbtnInitClick (TObject * feladó);

érvényteleníti __fastcall N7Click (TObject * feladó);

érvényteleníti __fastcall sbtnClearClick (TObject * feladó);

érvényteleníti __fastcall N8Click (TObject * feladó);

érvényteleníti __fastcall N4Click (TObject * feladó);

érvényteleníti __fastcall N5Click (TObject * feladó);

érvényteleníti __fastcall btnEncryptPClick (TObject * feladó);

érvényteleníti __fastcall btnDecryptPClick (TObject * feladó);

érvényteleníti __fastcall btnEncryptGClick (TObject * feladó);

érvényteleníti __fastcall btnDecryptGClick (TObject * feladó);

érvényteleníti __fastcall btnEncryptMClick (TObject * feladó);

érvényteleníti __fastcall btnDecryptMClick (TObject * feladó);

érvényteleníti __fastcall FormClose (TObject * Sender, TCloseAction Action);

érvényteleníti __fastcall N10Click (TObject * feladó);

érvényteleníti __fastcall N11Click (TObject * feladó);

private: // felhasználó nyilatkozatok

Nyilvános: // felhasználó nyilatkozatok

__fastcall TForm1 (TComponent * Képviselő);

extern CSOMAG TForm1 * Form1;

void __fastcall TForm2 :: Button1Click (TObject * Sender)

Tesztelés és az alkalmazás használata

1. Indítsa el az alkalmazást a végrehajtás megnyomásával Quick Save All and Run. Az OK gombra kattintva alak „Névjegy”. A fő formája almenük tisztító területeken. lemásolására eszköztár gombjai és titkosítás. A dekódolás nem lesz elérhető.

2. Az ablakban TextPascal (Memo1) adja meg a forráskódot (lásd. Ábra 4.6 pont). Kattintson a jobb gombbal az ablakot, és hívja fel a pop-up menü Mentés parancsával vagy mentse el a nyomtatási forráskód egy szöveges fájlt. Command Fájl / Megnyitás forráskód nyomtatási forráskód a többi forráskód ablakot. Csapat Main Menu Operations / inicializálás vagy kattintson az eszköztár gombot, másológépek inicializálási műveletek csapat rendelkezésére bocsátja \ Tisztító területeken. eszköztár gomb tiszta mezők és a gombot titkosítást. Dekódolás. és megközelíthetetlen csapat Operations / visszaállítás és inicializáló gomb.

3. titkosítása forráskódját Mindhárom módszer, és mentse a titkosított szöveget a dekódolás. Ehhez kattintson a gombok titkosítást. A Fájl mentése párbeszédpanelen adja meg a fájl nevét, majd kattintson a Mentés az ablak bezárásához.

4. a titkosított szöveget. Ehhez viszont törli az eredeti szöveget, kattintson a gombra dekódolás.

5. A kijelző a titkosított szöveget. Ehhez törlése a titkosított szöveget, írja be a parancsot a Fájl \ Open kódolt szöveg, és adja meg a fájl nevét. Győződjön meg arról, hogy a műveleteket ismételjük követelés 4. Ebben a vizsgálatban az alkalmazás befejeződik.

6. Írja Kezelés / Tisztítás mezőket, vagy kattintson az elszámolási területeken. Titkosítani és visszafejteni a szöveget, 3-4-szor nagyobb teszt szöveget.

7. A parancs File / Exit vagy kattintson a gomb kimenet teljes végrehajtását a kérelmet.

1. Hogyan titkosítja a szöveget Pascal háromszög módszer Gronsfelda, a mátrix? Hozd folyamatábrák.

2. Hogyan titkosítja a szó Pascal háromszög módszer Gronsfelda, a mátrix? Hozd folyamatábrák.

3. Hogyan kell titkosítani a levél Pascal háromszög módszer Gronsfelda, a mátrix? Hozd folyamatábrák.

4. Mivel jelenik meg a titkosítás a fájl?

5. Hogyan kell a titkosított szöveg található egy fájlt?

6. Milyen lehetőségeket jelent a modulok használata esetén a projekt nélkül formák? Hogyan hozhatok létre egy modult? Mit tartalmaz?

8. Milyen az irányelv feltételes fordítási?

10. Milyen az osztály konstruktor?

11. Milyen az osztály destructor?

12. Írja be a kódot pont, ahol az osztály konstruktora nevezzük.

13. Hol és hogyan kell módosítani a kódot a hívások számát a tervező?

14. Írja be a kódot pont, ahol a destruktor neve osztályban.

15. Hol és hogyan kell módosítani a kódot a hívások száma a destruktor?

16. Mivel a mellékletben tájékoztatást nyújt az alkalmazás és a fejlesztő? Adjon példát.

17. Hogyan történik a projektek közötti kapcsolatot a modulokat?

19. Milyen lehetőségek vannak a felhasználó által megadott kutató osztály?

Lab 5