algorytm.org

Szyfr Vigenere`a



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Szyfr Vigenere`a
Ocena użytkowników:***** / 48
SłabyŚwietny 
Wpisany przez Krzysztof Maćkowiak, 18 sierpnia 2005 00:16

Nazwa: Szyfr Vigenere`a

Rodzaj: Polialfabetyczny szyfr podstawieniowy

Historia i zastosowanie: Słabość szyfrów monoalfabetycznych sprawiła, że próbowano wymyślać bardziej rozbudowane szyfry. Naturalnym krokiem było korzystanie z kilku alfabetów zamiast jednego jak w przypadku szyfrów monoalfabetycznych. Dało to początek polialfabetycznym szyfrom podstawieniowym. Idea takiego szyfru pojawiła się już w XV wieku (Leon Battista Alberti). Kolejne pomysły związane są z takimi nazwiskami jak Johannes Trithemius oraz Giovanni della Porta. W tym miejscu chciałbym przedstawić najbardziej znany szyfr polialfabetyczny stworzony przez Blaise de Vigenere`a, oficjalnie opublikowany w jego pracy "Traicte des Chiffres" w 1586 roku. Podczas tworzenia swojego szyfru Vigenere opierał się na przemyśleniach wcześniej wymienionych osób.

Opis metody: Tekst szyfrujemy na podstawie hasła. Szyfrowanie odbywa się w sposób następujący. Każdą literę tekstu jawnego szyfrujemy korzystając z alfabetu zaczynającego się od odpowiadającej litery w haśle. W przypadku, gdy hasło jest krótsze od szyfrowanego tekstu powtarzamy je wielokrotnie.
Szyfrowanie i deszyfrowanie odbywa się na podstawie tablicy Vigenere`a. Tablica Vigenere`a

Przykład:

Tekst jawny:algorytmyistrukturydanych
Hasło:vigenerevigenerevigenerev
Tekst zaszyfrowanyvtmseckqtqyxeybxpzehnrpgc

Jawnyabcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
cdefghijklmnopqrstuvwxyzab
defghijklmnopqrstuvwxyzabc
efghijklmnopqrstuvwxyzabcd
fghijklmnopqrstuvwxyzabcde
ghijklmnopqrstuvwxyzabcdef
hijklmnopqrstuvwxyzabcdefg
ijklmnopqrstuvwxyzabcdefgh
jklmnopqrstuvwxyzabcdefghi
klmnopqrstuvwxyzabcdefghij
lmnopqrstuvwxyzabcdefghijk
mnopqrstuvwxyzabcdefghijkl
nopqrstuvwxyzabcdefghijklm
opqrstuvwxyzabcdefghijklmn
pqrstuvwxyzabcdefghijklmno
qrstuvwxyzabcdefghijklmnop
rstuvwxyzabcdefghijklmnopq
stuvwxyzabcdefghijklmnopqr
tuvwxyzabcdefghijklmnopqrs
uvwxyzabcdefghijklmnopqrst
vwxyzabcdefghijklmnopqrstu
wxyzabcdefghijklmnopqrstuv
xyzabcdefghijklmnopqrstuvw
yzabcdefghijklmnopqrstuvwx
zabcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwxyz

Opis procedury: Szyfrowany tekst znajduje się w pliku. Dodatkowo przed uruchomieniem procedury należy stworzyć drugi plik, będący plikiem wynikowym. W programie podajemy nazwy tych plików. Użytkownik podaje następnie hasło, korzystając jedynie z dużych liter z podstawowego alfabetu bez spacji i znaków interpunkcyjnych. Litery przepisywane są do tablicy hasło. Wartości ASCII tego hasła są przepisywane do tablicy tablica_ASCII (standardowo ustawiłem obie tablice na 200 elementów - jeżeli hasło byłoby dłuższe należy rozmiar ten w obu tablicach powiększyć). Gdy hasło jest krótsze następuje wartości wstawiane są od początku, aż zostanie wypełniona cała tablica. W przypadku gdy tekst jawny jest dłuższy niż 200 znaków należałoby również powiększyć obie wyżej wymienione tablice (w przypadku gdy byśmy tego nie zrobili korzystając z mojej procedury deszyfrującej odszyfrowanie powinno się powieść, jednak zostanie utracona ciągłość hasła i okres). Następnie otwierane są oba pliki i jeżeli operacja ta powiedzie się zaczyna się szyfrowanie. Za każdym razem pobierana jest jedna litera tekstu. Następnie według kod ASCII przydzielana jest ona do dwóch możliwych grup: duże lub małe litery. Wszystkie inne znaki w tym spacja podczas szyfrowania zostają usunięte. Każda pobrana litera jest następnie modyfikowana według odpowiadającej jej literze w haśle. Po zamianie każdej litery zapisywana jest ona w pliku wyjściowym. Na końcu oba pliki są zamykane i procedura kończy się.

Poziom bezpieczeństwa: Uzależniony od długości klucza. Od niskiego do bezwarunkowo bezpiecznego one-time pad

Metody kryptoanalizy: Test Kasiskiego, indeks koincydencji.


Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Krzysztof MaćkowiakC/C++
.cpp
.cpp
***** / 18
Piotr PawliszczeJava
.java
.java
***** / 5
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 05 września 2012 16:46
Komentarze
photo
-8 # natalia malkiewicz 2013-06-19 12:40
Nic z tego nie rozumiem, ale jesli ktos to zrozumie to niech rozszyfruje mi to:

aafżżgrk

Piszcie na emaila
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # ja 2015-03-05 23:23
trzeba znać słowo klucz bez tego się nie da
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # Zio l 3654 2016-10-15 09:22
A co coś takiego RGSRZLHGC GRVWDOHP RG YLJHQHUHD DOH MHM QLH URCXPLHP. SRZLHGCLDO 'ACPKCRIVLV', NOXFC URPH.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-2 # MateuszRaptor 2016-11-09 17:19
Można próbować złamać szyfr wieloma różnymi słowami dopóki nie otrzymamy sensownego odszyfrowanego wyrazu. Za pomocą programu powinno to zająć mało czasu
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz