É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) 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 = True ScrollBars = Both OpenFileDialog: ofd, SaveFileDialog: sfd
Caesar kód II. Private Sub cbOK_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 As String = "" For i = 0 To nyí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é 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)
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. A=0, B=1, C=2,… M+A=M, I+B=J, C+C=E,… Blaise Vigènere (1523 – 1596) 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): Private Sub cbOK_Click(… Const ábécé = 26 Dim kulcs As String = txtKulcs.Text 'módosult Dim nyílt As String = txtNyílt.Text Dim betű, i, j As Integer 'j beszúrása Dim titkos As String = "" j = 0 'kezdőérték For i = 0 To nyí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: (Étienne Bazeries (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
Köszönöm a figyelmet!