Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 40
1

Как зашифровать строку символов заданным криптографическим ключом?

07.04.2016, 12:45. Показов 2132. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, если можете!
Нужно решить такую задачу:
Зашифровать строку символов длиной L заданным криптографическим ключом Key длиной Lk (Lk<L), применив операцию Xor между символами шифруемой строки и ключа. Так как длина ключа Key меньше меньше длины шифруемой строки использовать цикличность применения ключа.
Есть у меня свой определенный код, но я, похоже, что-то недопонимаю.
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
procedure TMainForm.btn1Click(Sender: TObject);
var
  S,key,K:string;
  L, Lk,i,j:Integer;
begin
  S:=edt1.Text;
  key:=edt2.Text;
  L:=Length(S);
  Lk:=Length(key);
 
  if Lk>=L then begin
  ShowMessage('Ошибка!');
  edt1.Clear;
  edt2.Clear;
  end;
 
  if L<Lk then begin
  K:='';
  for i:=1 to L do
  for j:=1 to Lk do
  K[i]:=chr(ord(S[i]) xor ord(key[j]));
  edt3.Text:=K;
  end;
  end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2016, 12:45
Ответы с готовыми решениями:

Одно из сообщений длиной до 30 символов зашифровать открытым ключом первой пары, другое – второй
Сформировать две пары ключей длиной 512 и 1024 бит. Одно из сообщений длиной до 30 символов...

Как зашифровать и расшифровать текст с ключом?
Вводим в консоли любую строку, вводим ключ под эту строку, дальше текст перемешивается, далее...

Как зашифровать весь диск и бут с ключом вынести на флешку?
LUKS + LVM + Calculate Linux Здравствуйте, хочу зашифровать весь диск, бут и ключ шифрования...

Зашифровать строку символов
Дана произвольная строка символов.Зашифровать эту строку поменяя местами соседние символы в...

3
пофигист широкого профиля
4735 / 3168 / 860
Регистрация: 15.07.2013
Сообщений: 18,255
07.04.2016, 13:45 2
В задании Lk<L, а в решении L<Lk
0
10 / 10 / 22
Регистрация: 04.02.2016
Сообщений: 75
07.04.2016, 13:46 3
csgorulit,
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
var
  s: string;
 
procedure Code(var text: string; password: string;
  decode: boolean);
var
  i, PasswordLength: integer;
  sign: shortint;
begin
  PasswordLength := length(password);
  if PasswordLength = 0 then Exit;
  if decode
    then sign := -1
    else sign := 1;
  for i := 1 to Length(text) do
    text[i] := chr(ord(text[i]) + sign *
      ord(password[i mod PasswordLength + 1]));
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  s := Memo1.Text;
  code(s, Edit1.Text, false);
  Memo1.Text := s;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  code(s, Edit1.Text, true);
  Memo1.Text := s;
end;
1
500 / 356 / 231
Регистрация: 29.03.2015
Сообщений: 675
07.04.2016, 14:06 4
При применении операции XOR к одинаковым символам получается символ с кодом 0. Если тогда вывести зашифрованную строку в Edit, то она отобразится только до первого символа с кодом 0. Поэтому в моей программе зашифрованная строка сохраняется в переменной qstr. И расшифровка происходит qstr. Замечу, что шифровка и расшифровка происходит при одном и том же применении операции XOR в функции function qencode(s,Key:ansistring):ansistring;, где s - исходная строка и Key - ключ.
Код:
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
unit MainU;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label3: TLabel;
    Edit3: TEdit;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
qstr,qkey:ansistring;
 
implementation
 
{$R *.dfm}
 
function qencode(s,Key:ansistring):ansistring;
var
i,j,L,Lk:integer;
begin
L:=length(s);
Lk:=length(Key);
if Lk>=L then
begin
showmessage('Длина криптографического ключа должна быть меньше длины строки!');
result:='';
exit;
end;
j:=1;
for i:=1 to L do
begin
if j>Lk then
j:=1;
s[i]:=chr(ord(s[i]) xor ord(Key[j]));
j:=j+1;
end;
result:=s;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:ansistring;
begin
qkey:=edit2.Text;
s:=qencode(edit1.Text,qkey);
if s<>'' then
begin
qstr:=s;
for i:=1 to length(s) do
if s[i]<' ' then
s[i]:=' ';
edit1.Clear;
edit3.Text:=s;
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if (qstr<>'')and(qkey<>'') then
edit1.Text:=qencode(qstr,qkey);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
qstr:='';
qkey:='';
end;
 
end.
Прилагаю проект на Delphi.
Вложения
Тип файла: zip Encode3.zip (209.1 Кб, 10 просмотров)
1
07.04.2016, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2016, 14:06
Помогаю со студенческими работами здесь

Зашифровать строку перестановкой символов
Написать код программы на С#. Дана строка-предложение. Зашифровать ее, поместив вначале все...

Зашифровать строку символов её зеркальным отображением.
Дана строка символов. Ввод строки заканчивается после набора буквы &quot;Л&quot;. Зашифровать строку...

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

Зашифровать строку символов, поменяв в каждом слове первую и вторую буквы
Дана строка символов. Ввод строки заканчивается при вводе символа “F”. Зашифровать строку символов,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru