Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 13:18   #1
Petr1K
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 15
По умолчанию Шифрование поблочно, Delphi

Код:
procedure TForm1.Button1Click(Sender: TObject);
var a : Array[1..10] of integer;
    s,s1,s2 : string;
    i,g,L,k,n : integer;

    begin
a[1]:=3; a[2]:=5; a[3]:=1; a[4]:=8; a[5]:=10;
a[6]:=7; a[7]:=2; a[8]:=9; a[9]:=4; a[10]:=6;
  s := edit1.text;
  L := length(s);
  s1 := '';
 if (frac(l/10))=0 then
  n := round((L / 10)) 
  else
  n := trunc((L / 10))+1; 
  for k := 0 to n-1 do
  begin
  for I := 1+k*10 to 10+k*10 do
    s1 := s1 + s[a[i-k*10]];
  end;
    edit2.Text := s1;


    end;
Всем доброго времени суток, вот мой набросок шифрования поблочно. Блок=10 символов. 11 символ должен шифровать как 1, 12=2 и тд. Проблема в том, что если текст состоит из 10+ символов, прога не шифрует, блоки вычисляются правильно, цикл шифрования, вроде, тоже.
Помогите, кто чем сможет.

Последний раз редактировалось Stilet; 17.12.2010 в 15:26.
Petr1K вне форума Ответить с цитированием
Старый 17.12.2010, 14:50   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

вар 1.
Код:
for I := 1+k*10 to 10+k*10 do
s1 := s1 + s[k*10 + a[i-k*10]];
вар 2
Код:
for i:=1 to 10 do
s1:=s1 + s[k*10 +a[i] ];
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.12.2010, 04:39   #3
Petr1K
Пользователь
 
Регистрация: 17.05.2009
Сообщений: 15
По умолчанию

написал процесс расшифровки аналогично шифрованию,учитывая вышеописанный комментарий. Все работает нормально при условии если количество символов равно 10,20 и тд.
Код:
procedure TForm1.Button2Click(Sender: TObject);
var a : Array[1..10] of integer;
    s,s1,s2 : string;
    i,g,L,k,n : integer;

    begin
a[3]:=1; a[5]:=2; a[1]:=3; a[8]:=4; a[10]:=5;
a[7]:=6; a[2]:=7; a[9]:=8; a[4]:=9; a[6]:=10;
  s := edit2.text;
  L := length(s);
  s1 := '';
 if (frac(l/10))=0 then
  n := round((L / 10))
  else
  n := trunc((L / 10))+1;
  for k := 0 to n-1 do
  begin
  for i:=1 to 10 do
s1:=s1 + s[k*10 +a[i] ];
  end;
    edit3.Text := s1;
end;
Не подскажете, что не так?
Пример: "Привет,как дела?"
Шифр: "иеП а,рквтдлк"
Расш-ка: "Привет, как|д" (вместо | стоит какой-то непонятный символ)

Последний раз редактировалось Stilet; 19.12.2010 в 11:41.
Petr1K вне форума Ответить с цитированием
Старый 20.12.2010, 13:31   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

длина блока 4
блок (a) [4,3,2,1]
текст (s) длины 3 (ABC)
попробуйте вручную получить первую букву ШТ.
возможно натолкнет на мысль.

Он и называется блочным потому что применяется к ЦЕЛОМУ блоку.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.12.2010 в 13:34.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифрование методом RSA на Delphi Тёма(C@$pEr) Помощь студентам 13 17.12.2012 17:42
Шифрование данных средствами Delphi NoName_emaNoN Общие вопросы Delphi 12 12.08.2010 19:47
Delphi / простейшее шифрование FCSM Помощь студентам 3 19.04.2010 15:48
Шифрование в delphi Ensoph Помощь студентам 3 20.03.2009 15:18
Шифрование Stanislav Общие вопросы Delphi 2 15.11.2007 21:56