Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

XOR алгоритм


Страницы:   1 2 3 4 5

Denis_ ©   (2007-09-16 15:56:00) 

Несколько раз встречал здесь вопрос о таком методе шифрования, и стало интересно , как его реализовать.Как?


Инс   (2007-09-16 18:56:00) [61]


> [24] Anatoly Podgoretsky ©   (16.09.07 18:52)

Я понимаю, что после XOR строки уже не будет, но полученные двоичные данные можно перевести в строку, чтобы посмотреть, что же у нас в результате шифрования получилось.


Anatoly Podgoretsky   (2007-09-16 18:52:00) [62]

> Инс  (16.09.2007 18:51:23)  [23]

Нет смысла, достаточно простого понимания, что такое строка, не путать с типом string и как работает XOR


Инс   (2007-09-16 18:51:00) [63]


> [22] Anatoly Podgoretsky ©   (16.09.07 18:47)

Ну давайте поговорим :)


Anatoly Podgoretsky   (2007-09-16 18:47:00) [64]

> Инс  (16.09.2007 18:44:21)  [21]

Лучше говорить про голову, которая здесь не применялась.


Инс   (2007-09-16 18:44:00) [65]


> [20] Anatoly Podgoretsky ©   (16.09.07 18:40)

Сейчас снова скажу про Hex или Base64 :) Ладно, баян, не скажу...


Anatoly Podgoretsky   (2007-09-16 18:40:00) [66]

Почему тут вывод в строковые органы, после шифрации результат не является строкой.


{RASkov}   (2007-09-16 18:35:00) [67]

Т.е. модуль pas замени на этот:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Button2: TButton;
   Button1: TButton;
   Edit4: TEdit;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Edit1Change(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var Form1: TForm1;

implementation

{$R *.dfm}

function XOR_Algoritm(s : String;b : Integer):String;
var
  i : Integer;
begin
  Result:='';
  for i:=1 to length(s) do
      Result:=Result+Chr(Ord(s[i]) xor b);
end;

var S: String;
procedure TForm1.Button1Click(Sender: TObject);
begin
 S:=XOR_Algoritm(Edit2.Text, StrToIntDef(Edit1.Text, 0));
 Edit3.Text:=S;

 Edit4.Text:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit4.Text:=XOR_Algoritm(Edit3.Text, StrToIntDef(Edit1.Text, 0));
 Caption:=XOR_Algoritm(S, StrToIntDef(Edit1.Text, 0));

end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
 try
  Label1.Caption:=CHR(StrToInt(Edit1.Text));
 except
  Label1.Caption:='Error';
 end;
end;

end.


Изменения выделены жирным....
так более понятнее будет, что же имелось ввиду про работу/неработу этого алгоритма.


Сергей М.   (2007-09-16 18:33:00) [68]


> Denis_


"Фигня", "Пудрить мозги" ..

Ты только сленгомвладеешь ?)

Хорошо, легче ли тебе станет, если я скажу, что строка, зашифрованная по твоему алгоритму, перестает быть ожидаемой тобой строкой, ибо в ней после твоего шифрования потенциально присутствуют символ-терминатор ?


Инс   (2007-09-16 18:33:00) [69]


> Хотя возможно в статье по ссылке из [12] это сказано...

В статье из [12] про алгоритм XOR не сказано ничего :) Бо как самостоятельный этот алгоритм практической пользы не имеет, разве что как часть какого-либо другого.


{RASkov}   (2007-09-16 18:30:00) [70]

> [3] Denis_ ©   (16.09.07 17:04)
> но вдруг есть моменты, при которых это работать не будет?

Есть такие, например когда ключ совпадает с кодом символа,
но это не проблема и работать при этом будет, только нужно это учитывать в некоторых случаях...
Вот глянь я тебе для примера накидал, нагляднее лучше поймешь, что я хотел сказать.

object Form1: TForm1
 Left = 192
 Top = 114
 Width = 428
 Height = 131
 Caption = 'Form1'
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object Label1: TLabel
   Left = 236
   Top = 8
   Width = 6
   Height = 13
   Caption = 'в'
 end
 object Edit1: TEdit
   Left = 176
   Top = 4
   Width = 53
   Height = 21
   TabOrder = 0
   Text = '226'
   OnChange = Edit1Change
 end
 object Edit2: TEdit
   Left = 4
   Top = 32
   Width = 121
   Height = 21
   TabOrder = 1
   Text = 'слово'
 end
 object Edit3: TEdit
   Left = 144
   Top = 32
   Width = 121
   Height = 21
   TabOrder = 2
   Text = 'Edit3'
 end
 object Button2: TButton
   Left = 236
   Top = 64
   Width = 85
   Height = 25
   Caption = 'Расшифровать'
   TabOrder = 3
   OnClick = Button2Click
 end
 object Button1: TButton
   Left = 92
   Top = 64
   Width = 89
   Height = 25
   Caption = 'Зашифровать'
   TabOrder = 4
   OnClick = Button1Click
 end
 object Edit4: TEdit
   Left = 284
   Top = 32
   Width = 125
   Height = 21
   TabOrder = 5
   Text = 'Edit4'
 end
end


unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   Button2: TButton;
   Button1: TButton;
   Edit4: TEdit;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Edit1Change(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var Form1: TForm1;

implementation

{$R *.dfm}
//Оставил для простоты примера.
function XOR_Algoritm(s : String;b : Integer):String;
var
  i : Integer;
begin
  Result:='';
  for i:=1 to length(s) do
      Result:=Result+Chr(Ord(s[i]) xor b);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit3.Text:=XOR_Algoritm(Edit2.Text, StrToIntDef(Edit1.Text, 0));
 Edit4.Text:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit4.Text:=XOR_Algoritm(Edit3.Text, StrToIntDef(Edit1.Text, 0));
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
 try
  Label1.Caption:=CHR(StrToInt(Edit1.Text));
 except
  Label1.Caption:='Error';
 end;
end;

end.


Хотя возможно в статье по ссылке из [12] это сказано...


app   (2007-09-16 18:30:00) [71]

> Denis_  (16.09.2007 18:23:14)  [14]

А вы подеритесь


Denis_   (2007-09-16 18:23:00) [72]

Инс, спасибо!

А Вам, Сергей не мешало бы подумать над [11].То, что Вы старше и опытнее, не даёт Вам права пудрить мне мозги.


Сергей М.   (2007-09-16 18:13:00) [73]


> по которому есть сомнения


Какие конкретно ?

Использование твентинейджерского термина "Какая-нибудь фигня" не оправдывает даже начинающего.


Инс   (2007-09-16 18:00:00) [74]


> Что за шифрование, когда используется число, которое раскладывается
> на 2 простых множителя, и для расшифровки информации нужны
> эти множители?

Это алгоритм RSA, почитай это:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1271


Denis_   (2007-09-16 17:43:00) [75]

Извините, Сергей, я не пойму чего-то. Конференция "Начинающим", а не "Мастерам". Я автор вопроса, и имею права задать вопрос, по которому есть сомнения. Если Вы не можете сказать ничего конкретного по сути вороста, то, пожалуйста, не надо писать неинформативных постов. Я говорю это, так как из трёх ваших постов нельзя выцедить ни байта полезной информации(Кроме [10]).Извините, если обидел.


Сергей М.   (2007-09-16 17:36:00) [76]

Бо ты манипулируешь массивом символов как массивом байт.
При этом "фигня" тебе обеспечена)


Сергей М.   (2007-09-16 17:34:00) [77]


> Я просто спросил, не может ли быть какой-нибудь фигни пр
> использовании того кода, который я написал


Эта фигня обязательно найдется


Denis_   (2007-09-16 17:30:00) [78]


> Вот по каждому из этих "либо" и задавай отдельный вопрос.

Я просто спросил, не может ли быть какой-нибудь фигни пр использовании того кода, который я написал.Давайте закроем тему про "либо".

------------------------------------

Появился ещё вопросик :
Что за шифрование, когда используется число, которое раскладывается на 2 простых множителя, и для расшифровки информации нужны эти множители?


Сергей М.   (2007-09-16 17:25:00) [79]


> Denis_ ©   (16.09.07 17:12) [6]


Вот по каждому из этих "либо" и задавай отдельный вопрос.


Denis_   (2007-09-16 17:12:00) [80]


> Что такое "работать не будет" ?

"работать не будет" - это когда ф-ция выдаёт ошибку, либо строка потом не расшифровывается, либо ещё что-нибудь.

> OSokin ©   (16.09.07 17:08) [4]

Спасибо!


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо