Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 20.03.2017, 22:36   #1
diman97_09
 
Регистрация: 16.02.2017
Сообщений: 7
Репутация: 10
Восклицание Маршрутное шифрование.PascalABC.

Этот способ шифрования изобрел выдающийся французский математик и криптограф Франсуа Виет (1540-1603). Пусть m и n – некоторые натуральные числа, каждое больше 1. Открытый текст последовательно разбивается на части (блоки) с длиной, равной произведению mn (если в последнем блоке не хватает букв, можно дописать до нужной длины произвольный их набор). Блок вписывается построчно в таблицу размерности mхn (т.е. m строк и n столбцов). Криптограмма получается выписыванием букв из таблицы в соответствии с некоторым маршрутом. Этот маршрут вместе с числами m и n составляет ключ шифра. Чаще всего буквы выписывают по столбцам, которые упорядочиваются в соответствии с паролем: под таблицей подписывается слово, состоящее из n неповторяющихся букв, и столбцы таблицы нумеруются по алфавитному порядку букв пароля. Например, для шифрования открытого текста, выражающего один из главных принципов криптологии: нельзя недооценивать противника, добавим к его 29 буквам еще одну, скажем а, возьмем m=5, n=6, впишем текст в таблицу mxn;6 и выберем в качестве пароля слово п а р о л ь:
н е л ь з я
н е д о о ц
е н и в а т
ь п р о т и
в н и к а а
п а р о л ь
Выписывая теперь буквы по столбцам в соответствии с алфавитным порядком букв в пароле, получаем следующую криптограмму: ЕЕНПНЗОАТАЬОВОКННЕЬВЛДИРИЯЦТИА (пробелы пропускаются).
Составить программу, которая по заданным m, n и паролю выполнит шифрование/дешифрование методом Виета.


Помогите пожалуйста, надо срочно сдать а я не шарю совсем...
Надо чтоб программа работала с файлами(Взяла фразу из файла, записала в массив, а потом вывела конечный результат шифровки в другой файл, с дешифрованием так же). Если можно,шифрование и дешифрование в 2 кода записать. Буду безмерно благодарен.
diman97_09 вне форума   Ответить с цитированием
Старый 20.03.2017, 22:54   #2
Hitoku
Пользователь
 
Аватар для Hitoku
 
Регистрация: 05.03.2017
Сообщений: 17
Репутация: 10
По умолчанию

Код:

var
P:array [1..100,1..100] of string;
n,m,c:integer;
phrase,pass,pass_cr:string;
f:text;
begin
  writeln('Введите m и n:');
  readln(m,n);
  repeat
    writeln('Введите фразу из ',n*m,' символов (без пробелов):');
    readln(phrase);
  until length(phrase)=n*m;
  repeat
    writeln('Введите пароль из ',n,' символов:');
    readln(pass);
  until length(pass)=n;
 
  for var j:=1 to n do
    P[m+1,j]:=pass[j];
 
  pass_cr:=pass;
  for var i := 1 to length(pass_cr)-1 do begin
    for var j := i + 1 to length(pass_cr) do
      if pass_cr[j]<pass_cr[i] then begin
        var ch := pass_cr[i];
        pass_cr[i]:=pass_cr[j];
        pass_cr[j]:= ch;
      end;
  end;
        for var j:=1 to n do
          P[m+2,j]:=pass_cr[j];
 
  writeln('Выберите операцию:');
  writeln('1.Шифрование');
  writeln('2.Дешифрование');
  readln(c);
  case c of
  1: begin
         var l:=1;
         for var i:=1 to m do
           for var j:=1 to n do begin
            P[i,j]:=phrase[l];
            l+=1;
           end;
        
       writeln('Готово:');
       var s:=0;
       var j:=1;
       l:=1;
       repeat
         if P[m+1,j]=pass_cr[l] then begin
           for var i:=1 to m do
             write(P[i,j]);
           s+=1; j:=1; l+=1;
         end
           else j+=1;
       until s=n;
     end;
     
  2:begin
         var l:=1;
         for var j:=1 to n do
           for var i:=1 to m do begin
            P[i,j]:=phrase[l];
            l+=1;
           end;
     
       writeln('Готово:');
       for var i:=1 to m do begin
       var s:=0;
       var j:=1;
       l:=1;
       repeat
         if P[m+2,j]=pass[l] then begin
             write(P[i,j]);
           s+=1; j:=1; l+=1;
         end
           else j+=1;
       until s=n;
       end;
     end;
  end;
end.

__________________
Здесь должна быть подпись... Но чего-то лень придумывать(
Hitoku вне форума   Ответить с цитированием
Старый 20.03.2017, 22:59   #3
Hitoku
Пользователь
 
Аватар для Hitoku
 
Регистрация: 05.03.2017
Сообщений: 17
Репутация: 10
По умолчанию

Без файлов (из личных запасов). Либо как-нибудь самостоятельно, либо надейтесь и ждите)
__________________
Здесь должна быть подпись... Но чего-то лень придумывать(
Hitoku вне форума   Ответить с цитированием
Старый 20.03.2017, 23:18   #4
diman97_09
 
Регистрация: 16.02.2017
Сообщений: 7
Репутация: 10
По умолчанию

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

Последний раз редактировалось diman97_09; 20.03.2017 в 23:25.
diman97_09 вне форума   Ответить с цитированием
Старый 20.03.2017, 23:52   #5
Hitoku
Пользователь
 
Аватар для Hitoku
 
Регистрация: 05.03.2017
Сообщений: 17
Репутация: 10
По умолчанию

Вся информация об этом есть в интернете. Введите "работа с файлами паскаль" и будет вам радость
__________________
Здесь должна быть подпись... Но чего-то лень придумывать(
Hitoku вне форума   Ответить с цитированием
Старый 21.03.2017, 00:54   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 21,648
Репутация: 4911
По умолчанию

а ещё есть волшебный раздел Фриланс...
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование PascalABC.net Pistoletka Помощь студентам 0 22.11.2016 18:48
PascalABC stalker161reg Помощь студентам 0 25.12.2013 15:18
PascalABC Юся=) Помощь студентам 1 22.12.2011 19:09
PascalABC ludan Помощь студентам 0 22.10.2011 22:50
PascalABC, uses Gorny Помощь студентам 3 04.12.2009 14:12




06:30.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru