Найти - Пользователи
Полная версия: Подстановочный шифр
Начало » Центр помощи » Подстановочный шифр
1
Nameless95
Напишите программу, которая умеет шифровать и расшифровывать шифр подстановки. Программа принимает на вход две строки одинаковой длины, на первой строке записаны символы исходного алфавита, на второй строке — символы конечного алфавита, после чего идёт строка, которую нужно зашифровать переданным ключом, и ещё одна строка, которую нужно расшифровать.

Пусть, например, на вход программе передано:
abcd
*d%#
abacabadaba
#*%*d*%

Это значит, что символ a исходного сообщения заменяется на символ * в шифре, b заменяется на d, c — на % и d — на #.
Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*% с помощью этого шифра. Получаем следующие строки, которые и передаём на вывод программы:
*d*%*d*#*d*
dacabac
Пример ввода/вывода:
Input 1:
abcd
*d%#
abacabadaba
#*%*d*%
Output 1:
*d*%*d*#*d*
dacabac
Input 2:
dcba
badc
dcba
badc
Output 2:
badc
dcba
botinag
python2:
ish = raw_input('ishodnyi alfavit: ')
kon = raw_input('konechnyi alfavit: ')
rassh = raw_input('rasshifrovat: ')
zash = raw_input('zashifrovat: ')
ish_to_kon = dict(zip(ish, kon))
kon_to_ish = dict(zip(kon, ish))
print ''.join(map(ish_to_kon.get, rassh))
print ''.join(map(kon_to_ish.get, zash))
GreyZmeem
from string import maketrans
 
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
 
trans_table = maketrans(in_chars, out_chars)
print message.translate(trans_table)
Или, если хочется без maketrans и zip:
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
 
for index, char in enumerate(in_chars):
	message = message.replace(char, out_chars[index])
 
print message
In chars: aioet
Out chars: 41037
String to encode: batman ate my bicycle
b47m4n 473 my b1cycl3
Nameless95
Большое спасибо за помощь!
JustJames
насколько я понимаю, по условию в аутпуте должно быть две строки?
“Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*%”
terabayt
JustJames
насколько я понимаю, по условию в аутпуте должно быть две строки?
но ведь не сложно самому доделать?!
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
d_message = raw_input('String to decode: ') 
for index, char in enumerate(in_chars):
	message = message.replace(char, out_chars[index])
print message
for index, char in enumerate(out_chars):
	d_message = d_message.replace(char, in_chars[index])
print d_message
JustJames
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB