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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2016, 19:51
Mattew Mattew вне форума
Прохожий
 
Регистрация: 12.02.2016
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию программа не работает, но запускается

Код:
procedure TForm1.Button1Click(Sender: TObject);
var m:integer;
m1:string;
begin
s1 := '';
m1:=Memo3.Text;
m := Strtoint(m1);
s := Memo1.Text;
y[1] := Strtoint(Memo5.Text);
y[2] := Strtoint(Memo4.Text);
for i := 3 to Length(s) do
y := (y[i-1]+y[i-2]) mod m;
for i := 1 to Length(s) do
s1 :=s1 + chr(ord(s) XOR y);
Memo2.Text:=('Исходный текст:');
Memo2.Lines.Add(s);
Memo2.Lines.Add('Зашифрований текст:');
Memo2.Lines.Add(s1);
Memo6.Text:=s1;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.N3Click(Sender: TObject);
begin
if SaveDialog1.Execute then Memo2.Lines.SaveToFile(SaveDialog1.Filename);
end;

procedure TForm1.Button2Click(Sender: TObject);
var m:integer;
begin
s2 := '';
m := Strtoint(Memo3.Text);
s3 := Memo6.Text;
y[1] := Strtoint(Memo5.Text);
y[2] := Strtoint(Memo4.Text);
for i := 3 to Length(s3) do
y := (y[i-1]+y[i-2]) mod m;
for i := 1 to Length(s3) do
s2 :=s2 + chr(ord(s3) xor y);
Memo7.Text:=('Зашифрований текст:');
Memo7.Lines.Add(s3);
Memo7.Lines.Add('Исходный текст:');
Memo7.Lines.Add(s2);
end;
end.
Вложения
Тип файла: rar work attestation.rar (171.4 Кбайт, 2 просмотров)
Ответить с цитированием
  #2  
Старый 13.02.2016, 16:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Ну замечательно! А от нас то что требуется???
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 13.02.2016, 18:11
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Код:
(*********************************************************************
  How to use:

  var
    s: string;
  begin
    s := 'Carlos Alberto Longen';
    s := Crypt(s,12345);

    ShowMessage(Format('Ciphered: %s', [s]));
    ShowMessage(Format('Deciphered: %s', [decrypt(s,12345)]));
*********************************************************************)

unit untCrypt;

interface

  // ciphers the string "strText" with 32-bit "code" "intCode"
  function Crypt(const strText: string; const intKey: longint): string;

  // deciphers the string "strText" with 32-bit "code" "intCode"
  function Decrypt(const strText: string; const intKey: longint): string;

const
  // "default key" - select a "standard" for you...
  intDefKey = -967283; 

implementation

// ciphers the string "strText" with 32-bit "code" "intCode"
function Crypt(const strText: string; const intKey: longint): string;
var
  i: integer;
  strResult: string;
begin
  // initialize result
  strResult := strText;

  // sync RandSeed key to generate Random chars
  RandSeed := intKey;

  // cipher
  for i := 1 to Length(strText) do
    strResult[i] := Chr(Ord(strResult[i]) xor Random(255));

  // set results
  Crypt := strResult;
end;

// deciphers the string "strText" with 32-bit "code" "intCode"
function Decrypt(const strText: string; const intKey: longint): string;
begin
  // deciphers the string
  Decrypt := Crypt(strText, intKey);
end;

end.
Ответить с цитированием
  #4  
Старый 13.02.2016, 20:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Или я чего-то не вижу или лыжи не едут. Как функция предложенная Vayrus хоть что-то может правильно расшифровать? Но ведь работает, вот в чем парадокс.
Не врубаюсь. Ключ, который должен собственно шифровать/дешифровывать корректно, тут заменен рандомным значением
Код:
strResult[i] := Chr(Ord(strResult[i]) xor Random(255));
но если, для шифрования это будет работать, то как оно работает на расшифрвку - вот не врубаюсь напрочь. Какая-то уличная магия.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 13.02.2016, 21:05
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ах вот оно что... Я даже не знал, что есть такая хитрая переменная RandSeed в System. После экспериментального втыкания Randomize в нужное место все встало на свои места.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter