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.