rettsgi vizsga Visual Basic Express 2008 cal Egy
É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: A D, B E, … X A, Y B, Z C • Augustus (Kr. e. 63. – Kr. u. 14. ) Csak 1 hellyel tolta el: A B, B C, … X AA
Caesar kód I. • Gombok: OK, Beolvasás, Mentés • Szövegmezők: txt. Kód, txt. Nyílt, txt. Titkos: Multi. Line = True Scroll. Bars = Both • Open. File. Dialog: ofd, Save. File. Dialog: sfd
Caesar kód II. Private Sub cb. OK_Click(… Const ábécé = 26 Dim eltolás As Integer = Val(txt. Kulcs. Text) Dim nyílt As String = txt. Nyílt. Text Dim betű, i As Integer Dim titkos As String = "" For i = 0 To nyílt. Length - 1 betű = Asc. W(nyílt. Chars(i)) betű = betű + eltolás If betű > Asc. W("Z") Then betű = betű - ábécé End If If betű < Asc. W("A") Then betű = betű + ábécé End If titkos = titkos & Chr. W(betű) Next txt. Titkos. Text = titkos End Sub
Caesar kód III. Private Sub Beolvasás_Click(… If ofd. Show. Dialog = Windows. Forms. Dialog. Result. OK Then txt. Nyílt. Text = My. Computer. File. System. Read. All. Text(ofd. File. Name) End If End Sub Private Sub Mentés_Click(… If sfd. Show. Dialog = Windows. Forms. Dialog. Result. OK Then My. Computer. File. System. Write. All. Text(sfd. File. Name, _ txt. Titkos. Text. To. String, 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. File. Stream Dim olvasó As IO. Stream. Reader fájl = New IO. File. Stream("E: Tit. txt", File. Mode. Open) olvasó = New IO. Stream. Reader(fájl) While (olvasó. Peek > -1) s(olvasó. Read) += 1 End While For i As Integer = Asc. W("A") To Asc. W("Z") Console. Write. Line(Chr. W(i) & " --- " & s(i)) Next olvasó. Close() fájl. Close() Console. Read. Line() End Sub
Az ATBAS mószer • • Már a Bibliában is (Jeremiás könyve) Lényege: A Z, B Y, … Elnevezés: Alef Taw, Bet Sin Szimmetrikus (ugyanaz az eljárás dekódol) • Bináris fájlok esetén: 0 255, 1 254, 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 Dim Dim Sub cb. OK_Click(… Const ábécé = 26 kulcs As String = txt. Kulcs. Text 'módosult nyílt As String = txt. Nyílt. Text betű, i, j As Integer 'j beszúrása titkos As String = "" j = 0 'kezdőérték For i = 0 To nyílt. Length - 1 betű = Asc. W(nyílt. Chars(i)) betű = betű + Asc. W(kulcs. Chars(j)) - Asc. W("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 egyszerepeljen. (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!
- Slides: 14