Program: szyfrujący wprowadzony tekst przez użytkownika szyfrem Cezara, o podanym również przez użytkownika przesunięciu.
Program następnie wykonuje zliczenie znaków, gdzie przyjmuje trzy najczęściej występowane znaki za literę „A”, po czym następuje trzykrotne odszyfrowanie według ilości wcześniej znalezionych znaków.
Podawane są również adekwatne klucze do przesunięć.
Kompilator: Microsoft Excel
Film:
Kod programu:
Public tablica(1 To 26) As Integer
Sub Szyfruj()
Cells(13, 11) = ""
Cells(14, 11) = ""
Cells(15, 11) = ""
Cells(9, 10) = ""
Cells(10, 10) = ""
Cells(11, 10) = ""
Cells(6, 10) = ""
For i = 10 To 35
Cells(18, i) = 0
Cells(19, i) = ""
Cells(20, i) = ""
Cells(21, i) = ""
Next i
tekst = Cells(4, 5)
Cells(4, 10) = Cells(4, 5)
tekst = LCase(tekst)
długość = Len(tekst)
n = InputBox("Podaj o ile zaszyfrować tekst:")
For i = 1 To długość
znak = Mid(tekst, i, 1)
liczba_znaku = Asc(znak)
If liczba_znaku >= 97 And liczba_znaku <= 122 Then
liczba_znaku = 97 + (liczba_znaku + n - 97) Mod 26
znak = Chr(liczba_znaku)
Cells(6, 10) = Cells(6, 10) + znak
End If
Next i
End Sub
Sub Zlicz_znaki()
tekst = Cells(6, 10)
długość = Len(tekst)
For i = 1 To 26
tablica(i) = 0
Next i
For i = 1 To długość
znak = Mid(tekst, i, 1)
liczba_znaku = Asc(znak)
liczba_znaku = liczba_znaku - 96
tablica(liczba_znaku) = tablica(liczba_znaku) + 1
Next i
For i = 10 To 35
Cells(17, i) = Chr(96 + i - 9)
Cells(18, i) = tablica(i - 9)
Next i
End Sub
Sub Atakuj()
Cells(13, 11) = ""
Cells(14, 11) = ""
Cells(15, 11) = ""
przesuniecie1 = 0
przesuniecie2 = 0
przesuniecie3 = 0
znak_maks1 = "a"
znak_maks2 = "a"
znak_maks3 = "a"
maks1 = 0
maks2 = 0
maks3 = 0
For i = 1 To 26
If tablica(i) > maks3 And tablica(i) > maks2 And tablica(i) > maks1 Then
znak_maks1 = Cells(17, i + 9)
maks1 = tablica(i)
Else
If tablica(i) > maks3 And tablica(i) > maks2 Then
znak_maks2 = Cells(17, i + 9)
maks2 = tablica(i)
Else
If tablica(i) > maks3 Then
znak_maks3 = Cells(17, i + 9)
maks3 = tablica(i)
End If
End If
End If
Next i
przesuniecie1 = Asc(znak_maks1) - 97
przesuniecie2 = Asc(znak_maks2) - 97
przesuniecie3 = Asc(znak_maks3) - 97
Cells(9, 10) = przesuniecie1
Cells(10, 10) = przesuniecie2
Cells(11, 10) = przesuniecie3
tekst = Cells(6, 10)
długość = Len(tekst)
For i = 1 To długość
znak = Mid(tekst, i, 1)
liczba_znaku = Asc(znak)
liczba_znaku = 97 + (liczba_znaku + 33 - przesuniecie1) Mod 26
znak = Chr(liczba_znaku)
Cells(13, 11) = Cells(13, 11) + znak
Next i
If Cells(10, 10) = 0 Then
Cells(14, 11) = "-"
Cells(20, 22) = "-"
Else
For i = 1 To długość
znak = Mid(tekst, i, 1)
liczba_znaku = Asc(znak)
liczba_znaku = 97 + (liczba_znaku + 33 - przesuniecie2) Mod 26
znak = Chr(liczba_znaku)
Cells(14, 11) = Cells(14, 11) + znak
Next i
For i = 10 To 35
Cells(20, i) = Chr(97 + (i + 16 - przesuniecie2) Mod 26)
Next i
End If
If Cells(11, 10) = 0 Then
Cells(15, 11) = "-"
Cells(21, 22) = "-"
Else
For i = 1 To długość
znak = Mid(tekst, i, 1)
liczba_znaku = Asc(znak)
liczba_znaku = 97 + (liczba_znaku + 33 - przesuniecie3) Mod 26
znak = Chr(liczba_znaku)
Cells(15, 11) = Cells(15, 11) + znak
Next i
For i = 10 To 35
Cells(21, i) = Chr(97 + (i + 16 - przesuniecie3) Mod 26)
Next i
End If
For i = 10 To 35
Cells(19, i) = Chr(97 + (i + 16 - przesuniecie1) Mod 26)
Next i
End Sub
Sub Czyść()
Cells(4, 5) = ""
Cells(4, 10) = ""
Cells(6, 10) = ""
Cells(9, 10) = ""
Cells(10, 10) = ""
Cells(11, 10) = ""
Cells(13, 11) = ""
Cells(14, 11) = ""
Cells(15, 11) = ""
For i = 10 To 35
Cells(18, i) = 0
Cells(19, i) = ""
Cells(20, i) = ""
Cells(21, i) = ""
Next i
End Sub Słowniczek pojęć:
W kryptografii jedna z najprostszych technik szyfrowania. Jest to rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest oddaloną od niej o stałą liczbę pozycji w alfabecie inną literą (szyfr monoalfabetyczny), przy czym kierunek zamiany musi być zachowany.