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

Вниз

Шифрование...   Найти похожие ветки 

 
^SANYA   (2002-10-05 01:15) [0]

Помогите пожалуйста с такой вот штукой...
Суть в том, чотбы отладить шифровалку в PChar"ах...:
function Encrypt(const InString : PChar; StartKey : Word): PChar;
const
MultKey = 32142; // Mult default key
AddKey = 11719; // Add default key
var
OutString : PChar;
I : word;
begin
Result := InString;
I := 0;
while InString[i] <> #0 do
begin
Result[i] := Chr(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
inc(i);
end;

// Result[i] := #0;

end;


{$R-}
{$Q-}
function Decrypt(const InString : PChar; StartKey : Word): PChar;
const
MultKey = 32142; // Mult default key
AddKey = 11719; // Add default key
var
I : word;
begin
// приравниваем размеры строк, так как 1 входной символ равен 1-му исходящему(зашифрованному)
Result := InString;
i := 0;
while InString[i] <> #0 do
begin
Result[i] := Chr(Byte(InString[I]) xor (StartKey shr 8));
StartKey := (Byte(InString[I]) + StartKey) * MultKey + AddKey;
inc(i);
end;
Result[i] := #0;
end;
{$R+}
{$Q+}

Глючит потихоньку....
То символ лишний припишет(видно связано с #0-символом), то больше че 220 символов шифровать не умеет....


 
^SANYA   (2002-10-05 08:23) [1]

Никто не поможет???
Или ночка тёмная выдалась...


 
Ученик   (2002-10-05 08:27) [2]

Ответил же уже, скорее всего связано с #0 символом


 
yaJohn   (2002-10-05 13:10) [3]

Мн... ИМХО function func(params....):PChar; - не есть гуд. Равно как и PChar1:=PChar2. Хотя и работает. Иногда.
Почему бы не работать с нормальными строками? Хотя бы внутри функции, а в/из PChar переводить их на входе/выходе. У родного string нет проблем с #0. И интуиция мне подсказывает, что Chr(Byte(InString[I]) xor (StartKey shr 8)); выдаст рано или поздно #0 посреди строки со всеми вытекающими последствиями.
Коли уж очень надо работать в стиле АПИ - ИМХО лучше:
function Encrypt(var InData; const InSize: integer; var OutData; var OutSize: integer; StartKey : Word): integer;OutSize проверяется на достаточность размера OutData и возвращает необходимый размер. Собственно, любой вызов ВинАПИ возвращающий строку работает примерно так...



 
^SANYA   (2002-10-05 15:43) [4]

Штука в том, что мне сказали делать через PChar...
Мол, Pchar ограничен только размерами памяти компа, а String типа слабее...
Это правда?


 
yaJohn   (2002-10-05 17:46) [5]

>Мол, Pchar ограничен только размерами памяти компа, а String типа слабее...
Ну ежели 4 гига вам маловато будет, то пожалуй...


 
Vlad1   (2002-10-06 12:19) [6]

См.
http://www.pisoft.ru/verstak/kriptogr_1.htm



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

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

Наверх




Память: 0.45 MB
Время: 0.008 c
14-45510
Undert
2002-09-17 19:27
2002.10.14
<div>!!!


14-45572
iNew
2002-09-20 18:50
2002.10.14
Сообщение


4-45638
anato
2002-08-31 00:34
2002.10.14
Как запретить показ меню Пуск?


3-45189
ACR
2002-09-22 06:43
2002.10.14
case sens


1-45346
glina
2002-10-05 13:19
2002.10.14
Вопрос по FileListBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский