Szyfr Bacona jest to prosty szyfr podstawieniowy, w którym tekst zaszyfrowany zawiera pięcioliterowe ciągi złożone z liter A i B.
Francis Bacon stworzył tę metodę ukrywania jednej wiadomości w drugiej. Nie jest to prawdziwy szyfr, ale tylko sposób na ukrycie tajnego tekstu przed bezpośrednim odczytaniem.
Szyfr Bacona to tak naprawdę metoda steganografii (metoda ukrywania tajnej wiadomości w przeciwieństwie do szyfru) opracowana przez Francisa Bacona w 1605 roku. Komunikat jest ukryty w prezentacji tekstu, a nie w jego treści.
Istnieją dwie wersje. Pierwsza używa tego samego kodu dla I oraz J i dla U oraz V. Druga używa różnych kodów dla każdej litery.
Każda litera tekstu jawnego jest zastępowana przez grupę pięciu liter 'A' lub 'B'. Ta zamiana jest kodowaniem binarnym i odbywa się zgodnie z alfabetem szyfru Bacona (z alfabetu łacińskiego), jak poniżej:
Litera |
Kod |
Binarnie
|
A |
aaaaa |
00000
|
B |
aaaab |
00001
|
C |
aaaba |
00010
|
D |
aaabb |
00011
|
E |
aabaa |
00100
|
F |
aabab |
00101
|
G |
aabba |
00110
|
H |
aabbb |
00111
|
I, J |
abaaa |
01000
|
K |
abaab |
01001
|
L |
ababa |
01010
|
M |
ababb |
01011
|
|
Litera |
Kod |
Binarnie
|
N |
abbaa |
01100
|
O |
abbab |
01101
|
P |
abbba |
01110
|
Q |
abbbb |
01111
|
R |
baaaa |
10000
|
S |
baaab |
10001
|
T |
baaba |
10010
|
U, V |
baabb |
10011
|
W |
babaa |
10100
|
X |
babab |
10101
|
Y |
babba |
10110
|
Z |
babbb |
10111
|
|
Druga wersja szyfru Bacona używa unikalnego kodu dla każdej litery. Innymi słowy I, J, U oraz V mają swój własny oddzielny kod:
Litera |
Kod |
Binarnie
|
A |
aaaaa |
00000
|
B |
aaaab |
00001
|
C |
aaaba |
00010
|
D |
aaabb |
00011
|
E |
aabaa |
00100
|
F |
aabab |
00101
|
G |
aabba |
00110
|
H |
aabbb |
00111
|
I |
abaaa |
01000
|
J |
abaab |
01001
|
K |
ababa |
01010
|
L |
ababb |
01011
|
M |
abbaa |
01100
|
|
Litera |
Kod |
Binarnie
|
N |
abbab |
01101
|
O |
abbba |
01110
|
P |
abbbb |
01111
|
Q |
baaaa |
10000
|
R |
baaab |
10001
|
S |
baaba |
10010
|
T |
baabb |
10011
|
U |
babaa |
10100
|
V |
babab |
10101
|
W |
babba |
10110
|
X |
babbb |
10111
|
Y |
bbaaa |
11000
|
Z |
bbaab |
11001
|
|
W oryginale autor używał dwóch różnych krojów czcionki do ukrycia prawdziwej treści. Innego kroju czcionki dla A i innego dla B.
Na przykład, chcemy ukryć słowo "HASLO" i zakodować je w jakiejś treści, która z pozoru wyglądać będzie na zwykły tekst. Szyfrując słowo HASLO za pomocą kodu Bacona otrzymamy AABBBAAAAABAABAABABBABBBA. Oryginalna
tajna wiadomość (HASLO) ma 5 znaków, więc zakodowana wersja ma 5 * 5 = 25 znaków. Znajdujemy zdanie zawierające 25 liter, może to być "To tu ukryłem tajną wiadomość". Teraz zmieniamy krój czcionki. Dla każdego B użyjemy pogrubionej
kursywy, A pozostawimy bez zmian.
AA BB BAAAAAB AABAA BABBABBBA
To tu ukryłem tajną wiadomość
Czyli nasza odkryta wiadomość, w której zakodowaliśmy tajny tekst wyglądałaby następująco "To tu ukryłem tajną wiadomość".
Gdybym chciał odszyfrować tajną informację wystarczy, że za każdą literę napisaną normalnie podstawiłbym A, a za literę napisaną pogrubioną kursywą B. Otrzymany wynik wystarczy wstawić do dekodera lub sprawdzić w tabeli.