Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
FOXKILLER1
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 12
1

XOR вылазит за границы допустимых символов

13.12.2012, 11:11. Просмотров 625. Ответов 4
Метки нет (Все метки)

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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:\',VolumeName,MAX_PATH,@VolumeSerialNo, MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH);
  login:=xortext1(''+IntToHex(VolumeSerialNo,8));
  pass:=xortext2(''+IntToHex(VolumeSerialNo,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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 11:11
Ответы с готовыми решениями:

Форма вылазит за границы жкрана.
Я разработала форум на ASP, но не знаю, как исправить один глюк. В форме...

Flexbox элемент вылазит за границы контейнера
Есть блок меню. Пункты меню нельзя переносить, раскладка сделана на flex-ах для...

Центрирование картинки в div, которая вылазит за границы div
Проблема: центрирование картинки в div, которая вылазит за границы div`а. Что...

Ограничение ввода допустимых символов
Есть программа для ввода пароля, которая сравнивает введеный пароль с заданым. ...

Исключающее ИЛИ (XOR). Нужен пример операции побайтного XOR
Может кто-нибудь привести пример операции побайтного XOR?что-то вроде: есть...

4
murderer
3319 / 1465 / 134
Регистрация: 06.10.2010
Сообщений: 3,217
13.12.2012, 12:41 2
Delphi
1
2
3
4
5
6
7
8
9
10
function xorText(text: AnsiString; key: cardinal): AnsiString;
type
  dword=array[0..3] of byte;
var
  i: cardinal;
begin
  setLength(result,length(text));
  for i:=length(text) downto 1 do
    byte(result[i]):=byte(text[i]) xor dword(key)[i and 3];
end;
Пример вызова
Delphi
1
login:=xorText('777',VolumeSerialNo);
0
FOXKILLER1
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 12
13.12.2012, 13:03  [ТС] 3
Сделал как ты написал но все равно работает не правильно, раньше прога выводила разные знаки которые соответствовали количеству знаков в серийники, а сейчас если 777 три знака но всеравно не понятные и ввести с клавиатуры не получиться... Если тебе не сложно посмотри код пожалуйста, внутри папки есть файл txt в который записывается логин с паролем
0
Вложения
Тип файла: rar Киселев А.А с проектом.rar (1.80 Мб, 1 просмотров)
murderer
3319 / 1465 / 134
Регистрация: 06.10.2010
Сообщений: 3,217
13.12.2012, 13:22 4
В принципе можно перекодировать то, что получилось после xor в base64.

base64 Decode\Encode
1
FOXKILLER1
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 12
13.12.2012, 14:55  [ТС] 5
Цитата Сообщение от murderer Посмотреть сообщение
В принципе можно перекодировать то, что получилось после xor в base64.

base64 Decode\Encode
Спасибо вроде работает
0
13.12.2012, 14:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2012, 14:55

Как зашифровать XOR-ом так чтобы ключ был более 256 символов?
Как зашифровать данные методом XOR так чтобы ключ был более 256 символов?...

Как узнать количество комбинаций пароля, если известно количество допустимых и вводимых символов?
№1 Условия: 1) Существует: 20 символов (которые доступны для создания...

Вылазит реклама в стиме. При каждом нажатии на игру вылазит реклама на весь экран. Как убрать?
как


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru