140 likes | 300 Views
Érettségi vizsga Visual Basic Express 2008-cal. Egy ötlet a felkészítéshez: titkosírások. Farkas Csaba. Elöljáróban…. Hagyományos titkosítási eljárások: - érettségi szintű feladatok ( Vigenere , 2005) - érdekesek Visual Basic 2008 Express: modern, ingyenes Szteganográfia (adatelrejtés)
E N D
Érettségi vizsga Visual BasicExpress 2008-cal Egy ötlet a felkészítéshez: titkosírások Farkas Csaba
Elöljáróban… • Hagyományos titkosítási eljárások:- érettségi szintű feladatok (Vigenere, 2005)- érdekesek • Visual Basic 2008 Express: modern, ingyenes • Szteganográfia (adatelrejtés) • Kriptográfia (titkosírás) • Nyílt szöveg Titkos szöveg • Módszerek: betűhelyettesítés, betűkeverés • Angol ábécé: 26 betű, 65…90, más jel nincs!
Caesar kód • Caesar (Kr. e. 100. – Kr. e. 44.):Minden betűt 3 hellyel eltolt:AD, BE, …XA, YB, ZC • Augustus (Kr. e. 63. – Kr. u. 14.)Csak 1 hellyel tolta el:AB, BC, … XAA
Caesar kód I. • Gombok: OK, Beolvasás, Mentés • Szövegmezők:txtKód,txtNyílt, txtTitkos:MultiLine = TrueScrollBars = Both • OpenFileDialog: ofd,SaveFileDialog: sfd
Caesar kód II. PrivateSubcbOK_Click(… Const ábécé = 26 Dim eltolás As Integer = Val(txtKulcs.Text) Dim nyílt As String = txtNyílt.Text Dim betű, i As Integer Dim titkos AsString = "" For i = 0 Tonyílt.Length - 1 betű = AscW(nyílt.Chars(i)) betű = betű + eltolás If betű > AscW("Z") Then betű = betű - ábécé End If If betű < AscW("A") Then betű = betű + ábécé End If titkos = titkos & ChrW(betű) Next txtTitkos.Text = titkos End Sub
Caesar kód III. Private Sub Beolvasás_Click(… If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then txtNyílt.Text = My.Computer.FileSystem.ReadAllText(ofd.FileName) End If End Sub Private Sub Mentés_Click(… If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then My.Computer.FileSystem.WriteAllText(sfd.FileName, _ txtTitkos.Text.ToString, False) End If End Sub
A Caesar-kód feltörése I. • Statisztikai módszerekkel • Fájlkezelés + megszámlálás
A Caesar-kód feltörése II. Sub Main() Dim s(256) As Integer Dim fájl As IO.FileStream Dim olvasó As IO.StreamReader fájl = New IO.FileStream("E:\Tit.txt", FileMode.Open) olvasó = New IO.StreamReader(fájl) While (olvasó.Peek > -1) s(olvasó.Read) += 1 End While For i As Integer = AscW("A") To AscW("Z") Console.WriteLine(ChrW(i) & " --- " & s(i)) Next olvasó.Close() fájl.Close() Console.ReadLine() End Sub
Az ATBAS mószer • Már a Bibliában is (Jeremiás könyve) • Lényege: AZ, BY, … • Elnevezés: Alef Taw, Bet Sin • Szimmetrikus (ugyanaz az eljárás dekódol) • Bináris fájlok esetén: 0 255, 1254, azaz 255 – x • Házi feladat
Vigenère-kód I. Blaise Vigènere (1523– 1596) A=0, B=1, C=2,… M+A=M, I+B=J, C+C=E,… Vigènere-tábla
Vigenère-kód II. • A Caesar-kód programját csak kis mértékben kell átírni(A j változó végiglépked a kulcsszón): PrivateSubcbOK_Click(… Const ábécé = 26 Dim kulcs AsString = txtKulcs.Text 'módosult Dim nyílt As String = txtNyílt.Text Dim betű, i, jAs Integer 'j beszúrása Dim titkos AsString = "" j = 0 'kezdőérték For i = 0 Tonyílt.Length - 1 betű = AscW(nyílt.Chars(i)) betű = betű + AscW(kulcs.Chars(j)) - AscW("A") j = j + 1 'j növelése If j = kulcs.Length Then j = 0'előreállítás
A Vigenère-kód feltörése • Charles Babbage (1854, nem publikálta)Friedrich Kasiski (1863, porosz tiszt) • Ismert szavak (pl. aláírás, ld. Verne) • Ciklikusság alkalmazható a statisztika • Házi feladat
Újabb változatok • Bazeries őrnagy javaslata:(ÉtienneBazeries (1846 - 1931) A Vigenere-tábla átrendezhető úgy, hogy minden sorban és minden oszlopban minden betű pontosan egyszer szerepeljen.(A módszert gépesíti Enigma)Házi feladat (Érettségi, 2005) • Vernam kód (1917): Gilbert Vernam (1890-1960) A kulcsszó legyen legalább olyan hosszú, mint a nyílt szöveg.Pl. Richard Sorge: az 1935-ös német statisztikai évkönyvet használta