Шифровка/дешифровка

Тема в разделе "Pascal and Delphi", создана пользователем ymerla91, 16 дек 2013.

  1. ymerla91

    ymerla91 Member

    Регистрация:
    16 дек 2013
    Сообщения:
    5
    Симпатии:
    0
    здравствуйте.не знаю как сделать дешифровку. у меня сделана шифровка. не могли бы вы помочь с дешифровкой и если не сложно добавить комментарии. И возможно ли вывести зашифрованый и дешифрованый текст таблицей как в примере?

    вот исходная задача.
    Простая перестановка. Выбирается размер блока шифрования в n столбцов и m строк и ключевая последовательность, которая формируется из натурального ряда чисел 1,2,...,n случайной перестановкой.
    Шифрование проводится в следующем порядке:
    Шифруемый текст записывается последовательными строками под числами ключевой последовательности, образуя блок шифрования размером n*m.
    Зашифрованный текст выписывается колонками в порядке возрастания номеров колонок, задаваемых ключевой последовательностью.
    Заполняется новый блок и т.д.
    Например, зашифруем текст
    ГРУЗИТЕ_АПЕЛЬСИНЫ_БОЧКАХ
    блоком размером 8*3 и ключом 5-8-1-3-7-4-6-2.
    Таблица простой перестановки будет иметь вид:
    Ключ
    5 8 1 3 7 4 6 2
    Г Р У З И Т Е _
    А П Е Л Ь С И Н
    Ы _ Б О Ч К А Х
    Зашифрованное сообщение:
    УЕБ_НХЗЛОЕСЛГАЫЕИАИЬЧРП_
    Расшифрование выполняется в следующем порядке:
    Из зашифрованного текста выделяется блок символов размером n*m.
    Этот блок разбивается на n групп по m символов.
    Символы записываются в те столбцы таблицы перестановки, номера которых совпадают с номерами групп в блоке. Расшифрованный текст читается по строкам таблицы перестановки.
    Выделяется новый блок символов и т.д.

    Код (Text):
    program lab1;
    uses crt;
    var
    i, M: longint;
    n, o, oo: byte;
    R, T: string;
    Const
    S: string = 'грузите_апельсины_бочках';
    K: longint = 58137462;
    Begin
    i:=k;
    while i<>0 do
    begin
    inc(n);
    i:=i div 10;
    end;
    M:=0;
    For o:=1 to n do
    Begin
    i:=k;
    For oo:=1 to n do
    Begin
    if i mod 10 = o then M:=(M+oo)*10;
    i:=i div 10;
    End;
    End;
    M:=M div 10;
    R:='';
    For o:=1 to n do
    Begin
    oo:=n-(M mod 10)+1;
    T:='';
    while oo<=length(S) do
    Begin
    T:=T+S[oo];
    oo:=oo+n;
    End;
    M:=M div 10;
    R:=T+R;
    End;
    Writeln;
    Writeln('Зашифровать:');
    Writeln('kei: 58137462');
    Writeln('Исходный код: ',S);
    Writeln('Зашифрованый текст:',R);
    Writeln;
    Writeln('Дешифровать:');
    Writeln('kei: 58137462');
    Writeln('Зашифрованый текст: ' );
    Writeln('Дешифрованный текст:' );
    End.
     
Загрузка...
Похожие Темы - Шифровка дешифровка
  1. ymerla91
    Ответов:
    2
    Просмотров:
    1.853
  2. Реник
    Ответов:
    6
    Просмотров:
    1.160
  3. Chasovskiy
    Ответов:
    0
    Просмотров:
    1.174
  4. Chasovskiy
    Ответов:
    1
    Просмотров:
    1.254

Поделиться этой страницей