Deszyfrowanie szyfru kolumnowego

Deszyfrowanie szyfru kolumnowego
ZX
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:1
0

Witam mam problem z szyfrem kolumnowym. Polega on na narysowaniu tabeli o ilości kolumn co ilość cyfr w kluczu np. dla klucza {2,1,4,0,3} liczba kolumn wynosi 5. Następnie dzielimy nasze słowo przez liczbę kolumn i jeżeli reszta z dzielenia jest różna od 0 to znaczy, że zabraknie miejsca i dzielimy przez liczbę kolumn+1. Następnie poziomo zapisujemy słowo w tabeli i szczytujemy po kolumnach tak jak na zdjęciu. Moglby ktos pomoc z kodem w pythonie?

edytowany 1x, ostatnio: Riddle
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 19 godzin
  • Postów:3873
0

Na czym ta pomoc ma polegać?

US
  • Rejestracja:ponad 10 lat
  • Ostatnio:8 miesięcy
  • Postów:95
0

Odczytujesz kolumnami w kolejnosci numerow
kolumna 2: YNA
kolumna 1: RAZ
kolumna 4: TL
kolumna 0: KOI
kolumna 3: PA

Wynik: YNARAZTLKOIPA

Paweł Tometczak
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:31
0
Kopiuj
def encrypt(message, key):
    # wyznaczamy liczbę kolumn
    num_cols = len(key)
    # dzielimy długość słowa przez liczbę kolumn i określamy resztę z dzielenia
    num_rows, remainder = divmod(len(message), num_cols)
    # jeżeli reszta z dzielenia jest różna od 0, to dodajemy 1 do liczby wierszy
    if remainder != 0:
        num_rows += 1
    # tworzymy pustą tablicę do przechowywania słowa
    table = [[''] * num_cols for i in range(num_rows)]
    # wypełniamy tablicę poziomo, w kolejnych kolumnach
    for i, char in enumerate(message):
        row, col = divmod(i, num_cols)
        table[row][col] = char
    # szyfrujemy przez odczytanie kolumn w kolejności określonej przez klucz
    ciphertext = ''
    for col in key:
        ciphertext += ''.join(table[row][col] for row in range(num_rows))
    return ciphertext
edytowany 1x, ostatnio: Paweł Tometczak

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.