Vigenère - Zamiana tekstu w Kod
Gość_dZIADEK.SG_* 26.06.2014
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.
ex0
26.06.2014
Ładnie, przejrzyście i dobrze napisane.
Chociaż to:
W ten sposób członkowie Anonymous jak i LulzSec komunikują się ze Sobą.
wybiło mnie z butów.
oraz:
Kod którego nie może złamać nawet CIA
Poczucie humoru to Ty masz dobre i już Cię lubię ![]()
Gość_dZIADEK.SG_* 26.06.2014
;-)
No wiesz, kod który od 20 lat nie został złamany przez rząd Stanów Zjednoczonych a tu LulzSec ładnie połamało ![]()
Użytkownik vMaximus edytował ten post 26.06.2014 16:43
DarkGL
27.06.2014
Poczucie humoru to Ty masz dobre i już Cię lubię
Szyfr Vigenère'a może być szyfrem nie do złamania (zostało to udowodnione w 1949 przez Claude'a Elwooda Shannona) przy zachowaniu trzech reguł: klucz użyty do szyfrowania wiadomości był dłuższy lub równy szyfrowanej wiadomości,klucz musi być wygenerowany w sposób całkowicie losowy (nie może istnieć sposób na odtworzenie klucza na podstawie znajomości działania generatorów liczb pseudolosowych),klucz nie może być użyty do zaszyfrowania więcej niż jednej wiadomości.




