Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

lamed
Статус: Бакалавр
Рейтинг: 2583
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2329
∙ повысить рейтинг »
star9491
Статус: Практикант
Рейтинг: 1913
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)

Номер выпуска:1084
Дата выхода:18.05.2010, 16:00
Администратор рассылки:Boriss, Академик
Подписчиков / экспертов:233 / 181
Вопросов / ответов:1 / 1

Вопрос № 178345: Здравствуйте, уважаемые эксперты! Помогите мне, пожалуйста, с заданием! 1. Разработать программу, осуществляющую шифрование и расшифрование текста методом простой замены и поддерживающую ввод ключей в виде «символ открытого текста» – «символ...



Вопрос № 178345:

Здравствуйте, уважаемые эксперты! Помогите мне, пожалуйста, с заданием!
1. Разработать программу, осуществляющую шифрование и расшифрование текста методом простой замены и поддерживающую ввод ключей в виде
«символ открытого текста» – «символ зашифрованного текста»
Зашифровать фразу своим личным ключом методом одиночной перестановки, сохраняя ключ и текст конфиденциальными для других
2. Разработать программу, осуществляющую шифрование и расшифрование текста методом шифра Гронсфельда, сохраняя ключ и текст конфиденциальными для других

В наиболее простом методе символы шифруемого текста заменяются другими символами, взятыми из одного (одно- или моноалфавитная подстановка) или нескольких (много- или полиалфавитная подстановка) алфавитов. Самой простой разновидностью является прямая замена, когда буквы шифруемого сообщения за¬меняются другими буквами того же самого или некоторого другого алфавита.
Для повышения стойкости шифра используют так называем ые полиалфавитные подстановки, в которых для замены символов исходного текста используются символы нескольких алфавитов. Известно несколько разновидностей полиалфавитной подстановки, наиболее известными из которых являются одно- (обыкновенная и монофоническая) и многоконтурная.
При полиалфавитной одноконтурной обыкновенной подстановке для замены символов исходного текста используются несколько алфавитов, причем смена алфавитов осуществляется последовательно и циклически, т.е. первый символ заменяется соответствующим символом первого алфавита, второй — сим¬волом второго алфавита и т. д. до тех пор, пока не будут использованы все выбранные алфавиты. После этого использование алфавитов повторяется.
Частным случаем рассмотренной полиалфавитной замены является так называемая монофоническая замена. Особенность этого метода состоит в том, что количество и состав алфавитов выбираются таким образом, чтобы частоты появления всех символов в зашифрованном тексте были одинаковыми. При таком положении затрудняется криптоанализ зашифрованного текста с помощью его статистической обработки. Выравни¬вание частот появления символов достигается за счет того, что для часто встречающихся символов исходного текста предус¬матривается использование большего числа заменяющих эле¬ментов, чем для редко встречающихся.
Полиалфавитная многоконтурная замена заключается в том, что для шифрования используется несколько наборов (контуров) алфавитов используемых циклически, причем каждый контур в общем случае имеет свой индивидуальный период применения. Этот период, исчисляется, как правило, количеством знаков, после зашифровки которых меняется контур алфавитов.
Шифр Гронсфельда состоит в модификации шифра Цезаря числовым ключом. Для этого под сообщением пишут ключ. Если ключ короче сообщения, то его повторяют циклически. Шифровку получают будто в шифре Цезаря, но отсчитывая необязательно только третью букву по алфавиту, а ту, которая сдвинута на соответствующую цифру ключа. Так, применяя в качестве ключа группу из трех начальных цифр числа π, а именно 314, получаем шифровку:

сообщение с о в е р ш е н н о с е к р е т н о
Ключ 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3
шифровка ф п ж и с ь и о с с а х и л ф и у с с

Чтобы зашифровать букву сообщения С используя первую цифру ключа 3, отсчитывается третья по порядку от С в алфавите буква С-Т-У-Ф и получается буква шифровки Ф.

Отправлен: 12.05.2010, 15:46
Вопрос задал: Карина Комратова, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает lamed, Бакалавр :
Здравствуйте, Карина Комратова! Шифрование/дешифрование с использованием шифра Гронсфельда. Проверял в ABC-Pascal. Процедуры и функции не использовал из методических соображений.

Код:

program p178345;
{ Шифр Гронсфельда состоит в модификации шифра Цезаря числовым ключом.
Для этого под сообщением пишут ключ. Если ключ короче сообщения, то
его повторяют циклически. Шифровку получают будто в шифре Цезаря, но
отсчитывая необязательно только третью букву по алфавиту, а ту, которая
сдвинута на соответствующую цифру ключа. Так, применяя в качестве
ключа группу из трех начальных цифр числа PI, а именно 314, получаем шифровку:

сообщение с о в е р ш е н н о с е к р е т н о
Ключ 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3
шиф ровка ф п ж и с ь и о с с а х и л ф и у с с

Чтобы зашифровать букву сообщения С используя первую цифру ключа 3, отсчитывается
третья по порядку от С в алфавите буква С-Т-У-Ф и получается буква шифровки Ф.
}
const
n=4;
ABC: array[1..n] of string =
('ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz',
'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
'абвгдеёжзийклмнопрстуфхцчшщъыьэюя');

var
s1, s2, s3, key, AdoptedKey: string;
i, j, StrLen, KeyLen: integer;
shift: integer;
OldPos, NewPos: integer;
begin
write('Открытый текст ');
readln(s1);

write('Ключ ');
readln(key);

// Получение ключа длиной, равной длине строки текста
StrLen := length(s1);
KeyLen := length(key);

if (KeyLen >= StrLen) then
AdoptedKey := copy(key,1,StrLen)
else // Ключ короче шифруемой строки
begin
Adop tedKey := '';
for i:= 1 to StrLen div KeyLen do
AdoptedKey := AdoptedKey+key;
AdoptedKey := AdoptedKey + Copy(key,1,StrLen mod KeyLen);
end;
writeln(AdoptedKey);

// Шифрование
s2:= '';
for i:= 1 to StrLen do
begin
for j:= 1 to n do
begin
OldPos := pos(s1[i], ABC[j]);
if OldPos>0 then
break;
end;
if OldPos>0 then
begin
shift := ord(AdoptedKey[i])-ord('0');
NewPos := 1+(OldPos+shift-1) mod length(ABC[j]);
s2 := s2+ABC[j][NewPos];
end
else
s2 := s2+s1[i];
end;
writeln('Шифрованная строка ',s2);

// ДеШифрование
s3:= '';
for i:= 1 to StrLen do
begin
for j:= 1 to n do
begin
OldPos := pos(s2[i], ABC[j]);
if OldPos>0 then
break;
end;
if OldPos>0 then
begin
shift := ord(AdoptedKey[i])-ord('0');
NewPos := 1+(OldPos+length(ABC[j])-shift-1) mod length(ABC[j]);
s3 := s3+ABC[j][NewPos];
end
else
s3 := s3+s2[i];
end;
writeln('Дешифрованная строка ', s3);

end.


Код:

Открытый текст Окончен бой, погас очаг, и не осталось ничего
Ключ 123456
123456123456123456123456123456123456123456123
Шифрованная строка Пмссько дто, ссжеч ръдз, к сй пухдрфтю снэёес
Дешифрованная строка Окончен бой, погас очаг, и не осталось ничего

Ответ отправил: lamed, Бакалавр
Ответ отправлен: 15.05.2010, 21:57
Номер ответа: 261419

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261419 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное