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.

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).

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

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

(Az elején a projekt szerkezet)

(A projekt folytatása szerkezet)

(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