Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.05.2012, 10:00
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
Восклицание Криптография, Необходима помощь!

В общем согласно заданию необходимо, что бы в методе шифрования цезаря участвовали только символы "а...я", я очень долго пытался разобраться но ничего не выходит помогите плз.
Код:
procedure TForm1.BZShClick(Sender: TObject);
var
  i:integer;
begin
  str1:=mzSh.Text;
  MZZash.Text:='';
  bl:=StrToInt(ESdv.Text);
  for i:=1 to length(str1) do
    mzZash.Text:=mzZash.Text+chr( (ord(str1[i])+bl) mod 256 );
end;
 
procedure TForm1.BZPozShClick(Sender: TObject);
var
  i:integer;
begin
 //str1:=mzZash.Text;
 //bl:=StrToInt(ESdv.Text);
  MZPozsh.Text:='';
  for i:=1 to length(str1) do
    MZPozsh.Text:=MZPozsh.Text+chr( (ord(str1[i])+(224-32)) mod +224 );
end;
Админ: Пользуемся тегами для оформления кода!
Вложения
Тип файла: rar Lr_1.rar (323.2 Кбайт, 1 просмотров)

Последний раз редактировалось Admin, 11.05.2012 в 10:07.
Ответить с цитированием
  #2  
Старый 11.05.2012, 13:27
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Код:
alpha:array [0..32] of byte;

for i:=byte('a') to byte('я') do alpha[i]:=ord(i);
Вот тебе массив для шифра Цезаря.
Код:
position:=byte('буква')-224;
А вот это позиция буквы в массиве.
Для входной строки s процедура шифрования будет примерно следующая:
Код:
for i:=o to length(s)-1 do
newS[i]:=byte(S[i]-221); //C учетом сдвига на 3 символа

Последний раз редактировалось PS11011010, 11.05.2012 в 13:33.
Ответить с цитированием
  #3  
Старый 11.05.2012, 19:18
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
Вопрос

Не могли бы Вы объяснить, что именно необходимо отредактировать что бы все заработало?
Ответить с цитированием
  #4  
Старый 11.05.2012, 19:47
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

В каком смысле отредактировать? И до какой степени заработало?
Ответить с цитированием
  #5  
Старый 11.05.2012, 20:09
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
По умолчанию

Вот что я сделал, вероятнее всего это неправильно, подскажите как правильно отредактировать что бы все заработало?

Код:
procedure TForm1.BZShClick(Sender: TObject);
var
  i:integer;
  alpha:array [0..32] of byte;
begin
  str1:=mzSh.Text;
  MZZash.Text:='';
  bl:=StrToInt(ESdv.Text);
  for i:=byte('a') to byte('я') do alpha[i]:=ord(i);
    mzZash.Text:=mzZash.Text+chr( (ord(str1[i])+bl) mod 224 );
end;

procedure TForm1.BZPozShClick(Sender: TObject);
var
  i:integer;
begin
  str1:=mzZash.Text;
  bl:=StrToInt(ESdv.Text);
  MZPozsh.Text:='';
  for i:=1 to length(str1) do
    MZPozsh.Text:=MZPozsh.Text+chr( (ord(str1[i])-(224)) mod 224);
end;
Ответить с цитированием
  #6  
Старый 11.05.2012, 23:00
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Код:
mzZash.Text:=mzZash.Text+chr( (ord(str1[i])+bl) mod 224 );
Объясни, пожалуйста, почему так все сложно, да еще и целочисленное деление по модулю.
Ответить с цитированием
  #7  
Старый 11.05.2012, 23:19
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
По умолчанию

Код:
begin
  S:=newS.Text;
  for i:=0 to length(s)-1 do
  newS[i]:=byte(S[i]-221);

  //MZZash.Text:='';
  //bl:=StrToInt(ESdv.Text);
  //for i:=1 to length(str1) do
    //mzZash.Text:=mzZash.Text+chr( (ord(str1[i])+bl) mod 256 );
end;

lmikle: Пользуемся тегами!!!

Я к сожалению незнаю как исправить, по этому и прошу помоч.

Последний раз редактировалось lmikle, 11.05.2012 в 23:24.
Ответить с цитированием
  #8  
Старый 11.05.2012, 23:47
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
По умолчанию

Код:
procedure TForm1.BZShClick(Sender: TObject);
var
  i:integer;
  s: string;

begin
  newS.Text:='';
  for i:=0 to length(s)-1 do
  newS[i]:=byte(S[i]-221);
  //str1:=mzSh.Text;
  //MZZash.Text:='';
  //bl:=StrToInt(ESdv.Text);
  //for i:=1 to length(str1) do
    //mzZash.Text:=mzZash.Text+chr( (ord(str1[i])+bl) mod 256 );
end;
Ответить с цитированием
  #9  
Старый 12.05.2012, 00:19
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну почему так не любим использовать поиск? Надеетесь, что ваша тема такая уж оригинальная? Тема обсуждалась не раз, имеюются готовые программы.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 12.05.2012, 01:02
Mouse Mouse вне форума
Прохожий
 
Регистрация: 11.05.2012
Сообщения: 6
Репутация: 10
По умолчанию

Умею я юзать поиск, есть необходимость в редактировании именно этой версии...
Ответить с цитированием
  #11  
Старый 12.05.2012, 06:50
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Я, к сожалению, не совсем все понимаю в твоих кодах, поэтому накидаю общую схему действий.
1. Считываешь строку из текстового поля
Код:
input:=Edit1.text;
2. Создаем цикл для перестановки символов каждой строки (насколько я заметил, у тебя не совсем шифр Цезаря, т.е. число позиций сдвига регулируется. Будем хранить это значение в переменной dx)
Код:
for i:=0 to length(input)-1 do
 output[i]:=ord(byte(input[i])-224+dx);
3. Выводим результат.
Ответить с цитированием
Этот пользователь сказал Спасибо PS11011010 за это полезное сообщение:
Mouse (12.05.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter