Szyfr transpozycyjny
Szyfr transpozycyjny to algorytm kryptograficzny, w którym kolejność alfabetów w tekście jawnym jest przestawiana w celu utworzenia tekstu zaszyfrowanego. W tym procesie rzeczywiste alfabety zwykłego tekstu nie są uwzględniane.
Przykład
Prostym przykładem szyfru transpozycji jest columnar transposition ciphergdzie każdy znak w zwykłym tekście jest zapisywany poziomo z określoną szerokością alfabetu. Szyfr jest zapisywany pionowo, co tworzy zupełnie inny zaszyfrowany tekst.
Rozważmy zwykły tekst hello worldi zastosujmy prostą technikę transpozycji kolumnowej, jak pokazano poniżej
Znaki zwykłego tekstu są umieszczane poziomo, a tekst zaszyfrowany jest tworzony w formacie pionowym : holewdlo lr. Teraz odbiorca musi użyć tej samej tabeli do odszyfrowania zaszyfrowanego tekstu na zwykły tekst.
Kod
Poniższy kod programu demonstruje podstawową implementację techniki transpozycji kolumnowej -
def split_len(seq, length):
return [seq[i:i + length] for i in range(0, len(seq), length)]
def encode(key, plaintext):
order = {
int(val): num for num, val in enumerate(key)
}
ciphertext = ''
for index in sorted(order.keys()):
for part in split_len(plaintext, len(key)):
try:ciphertext += part[order[index]]
except IndexError:
continue
return ciphertext
print(encode('3214', 'HELLO'))
Wyjaśnienie
Korzystanie z funkcji split_len(), możemy podzielić zwykłe znaki tekstowe, które można umieścić w formacie kolumnowym lub wierszowym.
encode pomaga stworzyć zaszyfrowany tekst z kluczem określającym liczbę kolumn i drukuje zaszyfrowany tekst, odczytując znaki z każdej kolumny.
Wynik
Kod programu do podstawowej implementacji techniki transpozycji kolumnowej daje następujący wynik -
Note- Kryptoanalitycy zaobserwowali znaczną poprawę bezpieczeństwa kryptowalut podczas stosowania techniki transpozycji. Zauważyli również, że ponowne zaszyfrowanie zaszyfrowanego tekstu przy użyciu tego samego szyfru transpozycyjnego zapewnia lepsze bezpieczeństwo.