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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2012, 12:33   #1
FOXKILLER1
Новичок
Джуниор
 
Регистрация: 13.12.2012
Сообщений: 2
По умолчанию XOR вылазит за границы допустимых символов

Добрый день дорогие форумчане. Пишу программу на delphi 7 помогите пожалуйста исправить функцию XOR, очень надо... У меня программа ввода логина и пароля, надо чтоб логин с паролем шифровался Xor или другим алгоритмом а входные данные внутренние для шифрования будет серийный ключ тома HDD, тойсть смысл чтобы логин и пароль менялся в зависимости от машины


Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
btn1: TButton;
edt1: TEdit;
edt2: TEdit;
btn2: TButton;
pnl1: TPanel;
pnl2: TPanel;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function xortext1(text:string):string;
function xortext2(text:string):string;
end;

var
Form1: TForm1;

implementation

uses
Unit2, Unit3;

{$R *.dfm}

function TForm1.xortext1(text:string):string ;
var key, longkey : string;
i : integer;
toto: char;
begin
key:='777'; //ключ
for i := 0 to (length(text) div length(key)) do
longkey := longkey + key;
for i := 1 to length(text) do begin
toto := chr((ord(text[i]) XOR ord(longkey[i])));
result := result + toto;
end;
end;


function TForm1.xortext2(text:string):string ;
var key, longkey : string;
i : integer;
toto: char;
begin
key:='666'; //ключ
for i := 0 to (length(text) div length(key)) do
longkey := longkey + key;
for i := 1 to length(text) do begin
toto := chr((ord(text[i]) XOR ord(longkey[i])));
result := result + toto;
end;
end;

procedure TForm1.btn1Click(Sender: TObject);
var login,pass:string;
F: TextFile;
VolumeName,
FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNo : DWord;
MaxComponentLength,FileSystemFlags: Cardinal;
begin
GetVolumeInformation('C:\',VolumeNa me,MAX_PATH,@VolumeSerialNo, MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH);
login:=xortext1(''+IntToHex(VolumeS erialNo,8));
pass:=xortext2(''+IntToHex(VolumeSe rialNo,8));
if (edt1.text=login) and (edt2.text=pass) then
begin
form3.show;
form1.hide;
begin
AssignFile(F, 'MyFile.txt');
Rewrite(F);
Writeln(F, login);
Writeln(F, pass);
CloseFile(F);
end;
end
else
begin
Showmessage('Неверный логин или пароль');
Form1.SetFocus;
begin
AssignFile(F, 'MyFile.txt');
Rewrite(F);
Writeln(F, login);
Writeln(F, pass);
CloseFile(F);
end;
begin
edt1.Clear;
edt2.Clear;
end
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
AboutBox.Show;
end;

end.

Последний раз редактировалось FOXKILLER1; 13.12.2012 в 12:39.
FOXKILLER1 вне форума Ответить с цитированием
Старый 13.12.2012, 13:03   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
XOR вылазит за границы допустимых символов
Добрый день дорогие форумчане. Пишу программу на delphi 7 помогите пожалуйста исправить функцию XOR, очень надо...
для начала ответьте чему должно быть равно (по вашему мнению, а не программы) вот такое простое выражение
'a' xor 'a' =?
после этого определите прочие
'a' xor 'b' 'a' xor 'c' .....
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.12.2012, 13:51   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

результат операции XOR любых двух символов по определению может быть любым числом, в т.ч. и непечатным (даже более вероятно, что результат будет непечатным!!).
но это нормально.
переводите полученные символы в печатный вид (через Hex представление, либо через кодирование непечатные -> печатные (это UUE или широкоиспользуемый BASE64). получите набор печатных символов.

Примеров, как это сделать - полно (в т.ч. и на форуме я лично писал подобные примеры, поищите...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.12.2012, 20:00   #4
FOXKILLER1
Новичок
Джуниор
 
Регистрация: 13.12.2012
Сообщений: 2
По умолчанию

спасибо поищу
FOXKILLER1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c Xor frommars Общие вопросы C/C++ 4 03.10.2012 18:30
Вылазит синий экран смерти pauchara Операционные системы общие вопросы 10 27.12.2011 13:20
как задать область допустимых значений strateg66 Помощь студентам 0 25.10.2009 13:00
Поиск предельно допустимых перемещений объекта вдоль заданного вектора с учетом положения других объектов stюdent Помощь студентам 1 23.12.2008 19:45