Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

Передача строк в/из ДЛЛ.   Найти похожие ветки 

 
Fredericco   (2003-01-04 15:10) [0]

Есть моя ДЛЛька шифрования.
Вот код:


procedure EnCrypt_2(CodeT:PChar;var Res:PChar);// export;
var
Crypt,Code:string;
i,KeyCrypt1,KeyCrypt2,KeyCrypt3,KeyCrypt4,KeyCrypt5,KeyCrypt6,KeyCrypt7,KeyCrypt8,KeyCrypt255,KeyCrypt255_2,iCrypt:integer;
lne:integer;
begin
if @Res = nil then exit;
if CodeT = nil then exit;
try
Code:=CodeT;
Crypt:=StringOfChar(" ",Length(Code)*11);
lne:=Length(Code);
Randomize;
for i:=1 to lne do begin
KeyCrypt1:=Random(20)+1;
KeyCrypt2:=KeyCrypt1+Random(18)+1;
KeyCrypt3:=KeyCrypt2+Random(16)+1;
KeyCrypt4:=KeyCrypt3+Random(14)+1;
KeyCrypt5:=KeyCrypt4+Random(12)+1;
KeyCrypt6:=KeyCrypt5+Random(10)+1;
KeyCrypt7:=KeyCrypt6+Random(8)+1;
KeyCrypt8:=KeyCrypt7+Random(6)+1;
iCrypt:=Ord(Code[i]);
iCrypt:=(iCrypt+1) xor KeyCrypt1;
iCrypt:=(iCrypt+2) xor KeyCrypt2;
iCrypt:=(iCrypt+3) xor KeyCrypt3;
iCrypt:=(iCrypt+4) xor KeyCrypt4;
iCrypt:=(iCrypt+5) xor KeyCrypt5;
iCrypt:=(iCrypt+6) xor KeyCrypt6;
iCrypt:=(iCrypt+7) xor KeyCrypt7;
iCrypt:=(iCrypt+8) xor KeyCrypt8;
iCrypt:=iCrypt+1;
if iCrypt>255 then begin
KeyCrypt255:=iCrypt-255+1;
iCrypt:=255;
end Else KeyCrypt255:=1;
if KeyCrypt255>255 then begin
KeyCrypt255_2:=KeyCrypt255-255+1;
KeyCrypt255:=255;
end Else KeyCrypt255_2:=1;
Crypt[(i-1)*11+1]:=Chr(KeyCrypt1);
Crypt[(i-1)*11+2]:=Chr(KeyCrypt2);
Crypt[(i-1)*11+3]:=Chr(KeyCrypt3);
Crypt[(i-1)*11+4]:=Chr(KeyCrypt4);
Crypt[(i-1)*11+5]:=Chr(KeyCrypt5);
Crypt[(i-1)*11+6]:=Chr(KeyCrypt6);
Crypt[(i-1)*11+7]:=Chr(KeyCrypt7);
Crypt[(i-1)*11+8]:=Chr(KeyCrypt8);
Crypt[(i-1)*11+9]:=Chr(KeyCrypt255);
Crypt[(i-1)*11+10]:=Chr(KeyCrypt255_2);
Crypt[(i-1)*11+11]:=Chr(iCrypt);
end;
// ShowMessage(IntToStr(Length(Crypt)));
Res:=PChar(Crypt);
// ShowMessage(IntToStr(Length(Res)));
except
ShowMessage("err except");
end;
end;



Так вот при шифровани символа "A" длина строки b (проверяю в программе, вызывающей ДЛЛ: так как проверка в ДЛЛ не показала ошибок) равна 11. Пока правильно. Если пытаюсь зашифровать "AA" возвращается 21! Не правильно. Далее приведу сколько символов шифрую и длину b:
3 - 33 - правильно;
4 - 44 - правильно;
5 - 53 - не правильно;
6 - 66 - правильно;
7 - 77 - правильно;
300 - 3300 - правильно;
776 - 8536 - правильно;
777 - 8546 - не правильно;
900 - 8422 - не правильно;
9000 - 322 - не правильно;
9320 - 2 - не правильно;
9327 - 1 - не правильно;
9328 - акцесс виолятион!

Подскажите пожалуйста кто чем может.

Заранее благодарен,
с уважением
Fredericco.


 
Fredericco   (2003-01-04 15:13) [1]

Модераторы плиз не удаляйте мой пост из "Система".
Я случай туда и сюда пост отправил.
Правда не хотел!


 
mrcat   (2003-01-04 16:36) [2]

procedure EnCrypt_2( CodeT:PChar;var Res:PChar);// export;

если результат содержит #0 что делать будете?

procedure EnCrypt_2(CodeT: string;var Res: string);// export;
и пр. PChar меняйте...


 
sniknik   (2003-01-04 16:48) [3]

если работать со строками то
(из предупреждения когда dll создаеш)
ShareMem must be the first unit in your library"s USES clause AND your project"s

и вызовы экспортных процедур (различие в передаче параметров)
procedure EnCrypt_2(CodeT:PChar;var Res:PChar); stdcall;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-49028
KPV-10k
2003-01-07 22:00
2003.01.16
Cнимок изображения окна находящегося в FullScreen режиме?


3-48939
Lexa
2002-12-22 04:33
2003.01.16
DBGrid


14-49225
Uran
2002-12-26 08:57
2003.01.16
Работа со сканером


1-49007
Maximus
2003-01-06 13:24
2003.01.16
!!! TLabel стал мешаться.... !!!


14-49260
Дремучий
2002-12-26 17:20
2003.01.16
Программирование на Дот.Нет?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский