Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
54 / 54 / 11
Регистрация: 02.05.2010
Сообщений: 294
1

зашифровать пароль

25.04.2011, 18:12. Показов 6492. Ответов 11
Метки нет (Все метки)

добрый вечер. есть функция шифрования методом гаммирования
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function proc_encr(s_source, s_gamma: String): string;
Var
  i, j: Integer;
  s_rez: string;
begin
  s_rez := '';
  i := 1;
  While i <= Length(s_source) do
  begin
    For j := 1 to Length(s_gamma) do
      s_rez := s_rez + chr(ord(s_source[i + j - 1]) xor ord(s_gamma[j]));
    i := i + Length(s_gamma);
  end;
  Result := s_rez;
end;
нужно сделать чтоты пароль шифровался этим методом т.е. в edit вводится пароль помещается в файл в зашифрованном виде и надо чтобы при входе он как то разшифровывался. помогите пожалуйста очень надо. может у кого пример есть?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2011, 18:12
Ответы с готовыми решениями:

Если введен верный пароль, то открывается вторая форма с рисунком, если нет, то пароль запрашивается снова
2. Создайте форму со строкой для ввода пароля и кнопкой «Ок». Если введен верный пароль, то...

Пароль на программу (пароль из файла)
Добрый день, опять вопрос. Есть кнопка, &quot;Поставить пароль на программу&quot; (пароль берется из эдита)...

Передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5
Нужно передать серверу логин и пароль для авторитизации, но пароль нужно передать в md5. Но у меня...

Зашифровать тест
У меня есть конструктор тестов, который создаёт тест в собственном формате tst. Единственное, где...

11
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
25.04.2011, 19:47 2
Видимо код ты не сам писал, а гдето стырил))
Не будет он работать) а без рабочего шифрования, дешифрование не напишешь)
0
54 / 54 / 11
Регистрация: 02.05.2010
Сообщений: 294
25.04.2011, 20:07  [ТС] 3
в инете взял функцию.а у вас нет рабочего кода?
0
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
25.04.2011, 20:08 4
Хочу тебя обрадовать)) Я тут вспомнил что мне на четверг нужно написать програму шифрования, дешифрования методом гаммирования))
Так что жди)
0
54 / 54 / 11
Регистрация: 02.05.2010
Сообщений: 294
25.04.2011, 20:11  [ТС] 5
мне сегодня надо
0
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
25.04.2011, 20:55 6
Не уверен что сегодня зделаю, но завтра точно будет ибо мне в четерг здавать нужно...
0
54 / 54 / 11
Регистрация: 02.05.2010
Сообщений: 294
27.04.2011, 11:31  [ТС] 7
не у кого нет примера?
0
1850 / 1172 / 189
Регистрация: 27.03.2009
Сообщений: 4,511
27.04.2011, 12:15 8
функция классная. работает как для шифрования так и наоборот. прикольно. требуемые данные при шифровании/дешифровании это сам текст и слово-ключ. пример:
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
function proc_encr(s_source, s_gamma: String): string;
Var
i, j: Integer;
s_rez: string;
begin
s_rez := '';
i := 1;
While i <= Length(s_source) do
begin
For j := 1 to Length(s_gamma) do
s_rez := s_rez + chr(ord(s_source[i + j - 1]) xor ord(s_gamma[j]));
i := i + Length(s_gamma);
end;
Result := s_rez;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
assignfile(f,'c:\1.txt');
rewrite(f);
writeln(f,proc_encr(edit1.Text, 'test'));
closefile(f);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
assignfile(f,'c:\1.txt');
reset(f);
readln(f,s);
edit2.text:=proc_encr(s, 'test');
closefile(f);
end;
0
13 / 13 / 2
Регистрация: 20.12.2008
Сообщений: 73
03.05.2011, 14:26 9
Ох и намучился я с этим гаммированием...
Не знаю что у вас за функция но я делал опираясь на материал который мне выдали, я прикрепил pdf файл с ним, можете почитать и разобраться как все работает.
К тому же прикрепляю весь свой проект. Старался зделать все как можно лучше, много проверок на разные ошибки во избежания их, даже не знающий поймет что делать, потому что если что-то неправильно то програма ему скажет что и как исправить. Немного дизайна, работа с файлами, работает вточности как в теории. Код как для шифрования так и для дешифрования одинаков.

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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
procedure TMainForm.EncryptBitBtnClick(Sender: TObject);
var i,ii,j,k,ost,ch,m,a,b,x0:integer;
    alph,bin,str1,str2,str3,textbin,gammabin,resbin:string;
    arbin,lkmbin:array of string;
    x:array of integer;
    bool:boolean;
begin
  if ((MainForm.AlphEdit.Text='') or (MainForm.mEdit.Text='') or (MainForm.aEdit.Text='') or (MainForm.bEdit.Text='') or (MainForm.x0Edit.Text='')) then
    begin
      MainForm.InfoPanel.Caption:='Введіть початкові дані!';
      settimer;
    end
  else
    begin
      if MainForm.MessageMemo.Text='' then
        begin
          MainForm.InfoPanel.Caption:='Введіть відкритий текст!';
          settimer;
        end
      else
        begin
          MainForm.CryptMemo.Text:='';
          //ПРИСВАИВАЕМ ЗНАЧЕНИЕ АЛФАВИТА И НАЗНАЧАЕМ РАЗМЕРНОСТИ МАСИИВОВ
          alph:=MainForm.AlphEdit.Text;
          setlength(arbin,length(alph));
          setlength(x,length(alph));
          setlength(lkmbin,length(alph));
          //ПЕРЕВОДИМ ИНДЕКСЫ БУКВ АЛФАВИТА В ДВОИЧНОЕ ЗНАЧЕНИЕ И ЗАПИСЫВАЕМ В МАССИВ
          for i:=0 to length(alph)-1 do
            begin
              ii:=i;
                repeat
                  ch:=ii div 2;
                  ost:=ii-ch*2;
                  bin:=IntToStr(ost)+bin;
                  ii:=ch;
                until ch=0;
              arbin[i]:=bin;
              bin:='';
            end;
          //ДОПИСЫВАЕМ НОЛИ СЛЕВА ЧТОБЫ ВСЕ ДВОИЧНЫЕ ЗНАЧЕНИЯ БЫЛИ ОДИНАКОВЫХ РАЗМЕРОВ
          for i:=0 to length(alph)-1 do
            begin
              while not(length(arbin[i])=length(arbin[length(alph)-1])) do arbin[i]:='0'+arbin[i];
            end;
          //ПРОВЕРЯЕМ НА ПРАВИЛЬНОСТЬ АЛФАВИТА
          bool:=true;
          str1:=arbin[length(alph)-1];
          for i:=1 to length(arbin[0]) do
            begin
              if not (str1[i]='1') then bool:=false;
            end;
          if bool=false then
            begin
              MainForm.InfoPanel.Caption:='Невірний алфавіт. К-сть символів має бути 2^'+IntToStr(length(arbin[0]));
              settimer;
            end
          else
            begin
              //ВЫТЯГИВАЕМ И ПРИСВАЕВАЕМ ЗНАЧЕНИЯ ДЛЯ ЛИНЕЙНОГО КОНГРУЭНТНОГО МЕТОДА
              m:=StrToInt(MainForm.mEdit.Text);
              a:=StrToInt(MainForm.aEdit.Text);
              b:=StrToInt(MainForm.bEdit.Text);
              x0:=StrToInt(MainForm.x0Edit.Text);
              //ВЫПОЛНЯЕМ РАСЧЕТЫ ПО МЕТОДУ И ЗАПИСЫВАЕМ В МАССИВ
              x[0]:=x0;
              for i:=0 to length(alph)-2 do
                begin
                  x[i+1]:=(a*x[i]+b) mod m;
                end;
              //ЧИСЛА КОТОРЫЕ ПОЛУЧИЛИСЬ ПЕРЕВОДИМ В ДВОИЧНЫЕ И ЗАПИСЫВАЕМ В МАССИВ(ГАММА ШИФРА)
              for i:=0 to length(alph)-1 do
                begin
                  ii:=x[i];
                    repeat
                      ch:=ii div 2;
                      ost:=ii-ch*2;
                      bin:=IntToStr(ost)+bin;
                      ii:=ch;
                    until ch=0;
                  lkmbin[i]:=bin;
                  bin:='';
                end;
              //ДОПЫСЫВАЕМ НОЛИ СЛЕВА ТАК ЧТОБЫ ЗНАЧЕНИЯ ГАММЫ ШИФРА БЫЛИ НА ОДИН СИМВОЛ БОЛЬШЕ ЧЕМ ЗНАЧЕНИЯ ДВОИЧНЫХ ЗНАЧЕНИЙ АЛФАВИТА
              for i:=0 to length(alph)-1 do
                begin
                  while not(length(lkmbin[i])=length(arbin[length(alph)-1])+1) do lkmbin[i]:='0'+lkmbin[i];
                end;
              //И СОБСТВЕННО ШИФРУЕМ
              for i:=0 to MainForm.MessageMemo.Lines.Count-1 do
                begin
                  str1:=MainForm.MessageMemo.Lines[i];  //ВЫТЯГИВАЕМ ПЕРВУЮ СТРОКУ ИЗ МЕМО
                  //СОЗДАЕМ СТРОКУ ИЗ ДВОЧНОГО КОДА КОТОРЫЙ ОТВЕЧАЕТ ОТКРЫТОМУ ТЕКСТУ
                  for k:=1 to length(str1) do
                    begin
                      for j:=1 to length(alph) do
                        begin
                          if str1[k]=alph[j] then
                            begin
                              textbin:=textbin+arbin[j-1];
                            end;
                        end;
                      gammabin:=gammabin+lkmbin[k-1];  //СОЗДАЛИ СТРОКУ ГАММА ШИФРА
                    end;
                  //СУММИРУЕМ ЭТИ СТРОКИ, ТОЕСТЬ БИНАРНЫЙ КОД, ПО МОДУЛЮ 2
                  for k:=1 to length(textbin) do
                    begin
                      ch:=StrToInt(textbin[k])+StrToInt(gammabin[k]);
                      if ch=2 then resbin:=resbin+'0'
                      else resbin:=resbin+IntToStr(ch);
                    end;
                  //СУММУ ПЕРЕВОДИМ В ЗАШИФРОВАННЫЙ ТЕКСТ
                  ii:=0;
                  for k:=1 to length(str1) do  //ОПЕРДЕЛИЛИ СКОЛЬКО СИМВОЛОВ ШИФРА
                    begin
                      str2:=copy(resbin,1+ii,length(arbin[0])); //СКОПИРОВАЛИ КОЛИЧЕСТВО СИМВОЛОВ РАВНОЕ КОЛИЧЕСТВУ СИМВОЛОВ ЛЮБОГО ДВОИЧНОГО КОДА СИМВОЛА АЛФАВИТА
                      for j:=0 to length(alph)-1 do
                        begin
                          if str2=arbin[j] then
                            begin
                              str3:=str3+alph[j+1]; //ОПРЕДЕЛИЛИ СОВПАДЕНИЕ И ДОПИСАЛИ В СТРОКУ
                            end;
                        end;
                      ii:=ii+length(arbin[0]);
                    end;
                  MainForm.CryptMemo.Lines.Add(str3); //ВЫВЕЛИ В СТРОКУ
                  MainForm.InfoPanel.Caption:='Успішно зашифровано!';
                  settimer;
                  str3:='';
                  textbin:='';
                  gammabin:='';
                  resbin:='';
                end;
            end;
        end;
    end;
end;
2
Миниатюры
зашифровать пароль  
Вложения
Тип файла: pdf LK07.pdf (131.4 Кб, 137 просмотров)
Тип файла: zip Gammirovanie.zip (1.40 Мб, 211 просмотров)
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 12
08.01.2013, 10:02 10
Что-то не могу вложения посмотреть
Можешь на мыло отправить?
0
Заблокирован
08.01.2013, 23:34 11
Чот наворочено многовато. Шифрование то по идее строчек 5 да и дешифровка не больше.
0
0 / 0 / 0
Регистрация: 05.12.2010
Сообщений: 12
10.01.2013, 16:45 12
Сейчас не модно хранить пароли... выгоднее хранить хеши.
И спрашивать у пользователя тот самый "хеш"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2013, 16:45

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

Зашифровать слово
В Edit записывается слово (Edit2.Text = 'бла бла тру ля ля ') then При открытии проекта, как...

Зашифровать код
Здравствуйте, столкнулся с проблемой, нужно сделать это: есть Publickmod и exp=010001 нужно текст...

Зашифровать файл
доброго времени суток, пытаюсь зашифровать файл, все работает нормально , использую этот код for...

Нужно зашифровать строку
я плохо шарю в дельфи, а решить контрольную по программированию как-то надо. остались последние...

Зашифровать программный код
В общем, есть метод шифрования (какой именно, думаю, не важно). Мне надо им зашифровать программный...


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

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

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