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

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

Шифрование. [D7, WinXP]


Gear ©   (2005-05-19 21:46:00) 

Подскажите пожалуйста, делаю шифрование строки '123     ' расшифровываю полученный массив байтов и получаю '49 50 51 32 32 32 32 32'
в чём это я всё получил? в asci кодах или как? вижу что шифрование-дешифрование прошло но голова уже не в состоянии понять что я вижу на выходе :) Зарание спасибо всем откликнувшимся.


Gear   (2005-05-20 15:01:00) [1]

Проблема в конце рабочего дня и голодном желудке. :) я разобрался. спасибо кто откликнулся )

А теперь новый вопрос: ))
шифрую строку 123 и получаю hex-строку и вывожу её в мемо

-----------------------------
шифрование:

в едит пишем '123'

var
 s: Pchar;
 str:string;
 i: integer;
 dta: array of byte;
 m:integer;
begin
 str:=Edit1.Text;
 m:=length(str) mod 8;

 if m<>0 then
 begin
    for j:=1 to 8-m do
    begin
    str:=str+' ';
    end;
 end;
 s:=Pchar(str);

 dta:=nil;
 SetLength(dta, length(s));

 for i:=1 to (length(s) div 8) do
 begin
//      функция шифрования
 end;
 for i:=0 to length(s)-1 do
 memo1.Text:=memo1.Text+IntToHex(dta[i],2);

на выходе получаем в мемо строчку 'FFE7F0ECDC6B93E3'

-------------
теперь самое страшное -дешифровка:

var

 s: Pchar;
 str:Pchar;
 i,j: integer;
 KeyData: TGOSTData;
 dta1: array of byte;
 dta2: array of byte;
 m:integer;
 sst:string;
 hexstring:string;
begin

 str:=pchar(memo1.Text);
 dta1:=nil;
 dta2:=nil;
 SetLength(dta1, 8);
 for i:=1 to 8 do  begin
   if (i mod 2)=0 then begin end else
   begin
    dta1[i-1]:=hextoint(str[i-1]+str[i]);
   end;
 end;

{
SetLength(dta1, 8);
//SetLength(dta2, 8);
dta1[0]:=255;
dta1[1]:=231;
dta1[2]:=240;
dta1[3]:=236;
dta1[4]:=220;
dta1[5]:=107;
dta1[6]:=147;
dta1[7]:=227;
}

 for i:=1 to (length(dta1) div 8) do
 begin
   SetLength(dta2, length(dta2)+8);
   //дешифруем
 end;

 for i:=0 to length(dta2)-1 do
   memo2.Text:=memo2.Text+chr(dta2[i]);

и не работает (в мемо сыпеть всяк хрень а не 123), но что самое удивительное если раскомментить, то что в {} и убрать блок чуть выше, то работает и выдаёт в мемо '123     '. Кто подскажет где у меня не так заполняется массив байт? (функции и всяк лабуду отвечающую за шифровку дешифровку убрал чтобы не смущать).


Defunct   (2005-05-19 23:57:00) [2]

Gear   (19.05.05 21:46)

Ну и? все ты правильно получил.

Chr(32) = ' '
Chr(49) = '1'

В чем же проблема?

raidan ©   (19.05.05 23:44) [2]
Он же написал - " расшифровываю полученный массив байтов и получаю"


raidan   (2005-05-19 23:44:00) [3]

>Reindeer Moss Eater ©   (19.05.05 21:54) [1]
Не нужно так шутить, а то я помру от смеха :)

>Gear   (19.05.05 21:46)  
Шифрование :))))
Муууууу :))))

ну если у нас chr и ord теперь называется шифрованием, то на выходе получаем ascii коды, да...


Reindeer Moss Eater   (2005-05-19 21:54:00) [4]

в чём это я всё получил?
В программе.


Наверх

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