import alfavit
from alfavit import alfa
slovo = [21, 1, 3, 1, 20, 24, 29]
g=0
gg=0
N=33
for i in alfa:
print(f"Начало. Ключ {gg}", end="\n")
for i in slovo:
a=(slovo[g] - (0+gg))%N
print(alfa[a], end="")
g=g+1
print(" ", end="\n")
print("конец")
g=0
gg=gg+1
import alfavit
from alfavit import alfa
slovo=input("Введите текст слитно ")
S=int(input("Введите длину ключа (до 32) "))
N=32
g=0
for i in slovo:
c=(slovo[g]+S)%N
print(c)
g=g+1
text
и строка-ключ key
, а также список строк, содержащий алфавит языка alpha
.# принимает символ открытого текста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ шифротекста
def viginere_encode(text_char: str, i: int, key: str, alpha: list[str]) -> str:
if text_char not in alpha: # незнакомый символ?
return text_char # оставляем его как есть
text_char_code = alpha.index(text_char) # номер символа открытого текста в алфавите
key_char = key[i % len(key)] # символ ключа, соответствующего i-му символу открытого текста
key_char_code = alpha.index(key_char) # номер символа ключа в алфавите
cypher_char_code = (text_char_code + key_char_code) % len(alpha) # номер символа шифротекста
return alpha[cypher_char_code] # возвращаем символ шифротекста
cipher_text = ''
for i in range(len(text)):
cipher_text += viginere_encode(text[i], i, key, alpha)
alpha = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
text = 'A SMOKE OF MOTHERLAND IS SWEET FOR US AND PLEASANT'
key = 'SECRET'
# принимает символ открытого текста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ шифротекста
def viginere_encode(text_char: str, i: int, key: str, alpha: list[str]) -> str:
if text_char not in alpha: # незнакомый символ?
return text_char # оставляем его как есть
text_char_code = alpha.index(text_char) # номер символа открытого текста в алфавите
key_char = key[i % len(key)] # символ ключа, соответствующего i-му символу открытого текста
key_char_code = alpha.index(key_char) # номер символа ключа в алфавите
cypher_char_code = (text_char_code + key_char_code) % len(alpha) # номер символа шифротекста
return alpha[cypher_char_code] # возвращаем символ шифротекста
# принимает символ шифротекста, его позицию в тексте, строку-ключ и алфавит
# возвращаем символ открытого текста
def viginere_decode(cipher_char: str, i: int, key: str, alpha: list[str]) -> str:
if cipher_char not in alpha: # незнакомый символ?
return cipher_char # оставляем его как есть
cipher_char_code = alpha.index(cipher_char) # номер символа шифротекста в алфавите
key_char = key[i % len(key)] # символ ключа, соответствующего i-му символу шифротекста
key_char_code = alpha.index(key_char) # номер символа ключа в алфавите
text_char_code = (cipher_char_code + len(alpha) - key_char_code) % len(alpha) # номер символа открытого текста
return alpha[text_char_code] # возвращаем символ открытого текста
cipher_text = ''
for i in range(len(text)):
cipher_text += viginere_encode(text[i], i, key, alpha)
decoded_text = ''
for i in range(len(cipher_text)):
decoded_text += viginere_decode(cipher_text[i], i, key, alpha)
print(text)
print(cipher_text)
print(decoded_text)