Algorytm Vigenère'a jest jednym z klasycznych algorytmów szyfrujących. Należy on do grupy tzw. polialfabetycznych szyfrów podstawieniowych. Szyfr ten błędnie został przypisany twórcy bardziej skomplikowanego szyfru Blaise'owi de Vigenère.
Szyfr, który obecnie nazywamy szyfrem Vigenère'a po raz pierwszy został opisany przez Giovana Batista Belaso w 1553 w broszurze zatytułowanej La cifra del. Sig. Giovan Batista Belaso
(Wikipedia)
Kod którego nie może złamać nawet CIA
Najsłynniejszym napisem w kwaterze głównej Centralnej Agencji Wywiadowczej w Langley w stanie Wirginia, było biblijne wyrażenie wyrzeźbione na marmurowej posadzce w holu głównym: „I poznacie prawdę, a ona was wyzwoli”. Lecz w ciągu ostatnich kilkunastu lat przedmiotem intensywnych badan The Company (Firmy – potocznej nazwy CIA) było 865 liter, tworzących pozorny bełkot, wytłoczonych na płycie z miedzi o grubości pół cala, znajdującej się na placu pomiędzy jej własnymi budynkami.
Brzmi on następująco ”Drżącymi rękoma zrobiłem mały wyłom w górnym lewym rogu. Następnie poszerzając trochę otwór, włożyłem do środka świecę i zajrzałem wgłąb. Gorące powietrze uciekające z komory spowodowało migotanie płomienia, lecz szczegóły komory wyłoniły się z ciemności. Czy widzisz cokolwiek?”
No to zaczynajmy
<--!Vigenere Encrypted by vMaximus!--> #include <iostream> #include <string> using namespace std; class Vigenere { public: string key; Vigenere(string key) { for(int i = 0; i < key.size(); ++i) { if(key[i] >= 'A' && key[i] <= 'Z') this->key += key[i]; else if(key[i] >= 'a' && key[i] <= 'z') this->key += key[i] + 'A' - 'a'; } } string encrypt(string text) { string out; for(int i = 0, j = 0; i < text.length(); ++i) { char c = text[i]; if(c >= 'a' && c <= 'z') c += 'A' - 'a'; else if(c < 'A' || c > 'Z') continue; out += (c + key[j] - 2*'A') % 26 + 'A'; j = (j + 1) % key.length(); } return out; } string decrypt(string text) { string out; for(int i = 0, j = 0; i < text.length(); ++i) { char c = text[i]; if(c >= 'a' && c <= 'z') c += 'A' - 'a'; else if(c < 'A' || c > 'Z') continue; out += (c - key[j] + 26) % 26 + 'A'; j = (j + 1) % key.length(); } return out; } }; int main() { Vigenere cipher("VIGENERECIPHER"); string original = "Twoj Text do zeszyfrowania"; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout << original << endl; cout << "Encrypted: " << encrypted << endl; cout << "Decrypted: " << decrypted << endl; }
Kod jest w języku c++
W miejscu: string original = "Twoj Text do zeszyfrowania"; <- pogrubione zamieniamy na nasz własny tekst do zakodowania.
W ten sposób członkowie Anonymous jak i LulzSec komunikują się ze Sobą.
Prawa zastrzeżone dla Amxx.pl
Pozdrawia, vMaximus.