Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2023 01:05:26

zer0craft_07
Зарегистрирован: 2023-05-28
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Код выдаёт не квадрат виженера

En =

vigenere_square =
vigenere_square2 = {}

for bias in range(26):
vigenere_square2[En] = vigenere_square
vigenere_square.clear()
for letter_index in range(26):
if letter_index + bias >= len(En):
vigenere_square.append(En)
else:
vigenere_square.append(En)


print(vigenere_square2)

В общем, каждой букве русского алфавита должен соответствовать алфавит смещённый на +1 букву по шифру цезаря, относительной прошлой буквы, а выдаётся, что каждой букве соответствует алфавит смещённый на 34 символа относительно буквы А, тоесть:
{'A': , ‘B’: , ‘C’: , ‘D’: , ‘E’: , ‘F’: , ‘G’: , ‘H’: , ‘I’: , ‘J’: , ‘K’: , ‘L’: , ‘M’: , ‘N’: , ‘O’: , ‘P’: , ‘Q’: , ‘R’: , ‘S’: , ‘T’: , ‘U’: , ‘V’: , ‘W’: , ‘X’: , ‘Y’: , ‘Z’: }

Офлайн

#2 Май 28, 2023 04:26:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9849
Репутация: +  853  -
Профиль   Отправить e-mail  

Код выдаёт не квадрат виженера

zer0craft_07
В общем, каждой букве русского алфавита должен соответствовать алфавит смещённый на +1 букву по шифру цезаря, относительной прошлой буквы
Чего должен? Ты разберись сначала, о чём речь идёт вообще.
Там много алфавитов, которые выбираются по принципу строка столбец.

Так что сделай список строк. Потом просто по индексу буквы текста в простом алфавите ищешь индекс буквы и по индексу буквы ключа в простом алфавите ищешь индекс буквы. Так у тебя получается номер строки и номер столбца в этом списке строк. Берёшь эту букву из пересечения строки и столбца в списке строк и таким образом у тебя получается буква шифротекста.

Если же ты хочешь сгенерировать квадрат этот (хотя обычно его записывают просто напрямую), то это вообще к шифрованию не относится. Это работа со списком списков просто.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version