Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.14;
Скачать: CL | DM;

Вниз

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

 
^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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-45441
Демонов Е.В.
2002-10-03 12:08
2002.10.14
Вопрос О Процессах


1-45358
veZuk
2002-10-06 11:26
2002.10.14
Синусоида


3-45217
dmitry_k
2002-09-23 00:07
2002.10.14
EmptyTable


3-45203
Rustik
2002-09-23 13:14
2002.10.14
Мастера помогите имеются две таблицы Родитель-Дочернее пытаюсь


7-45599
Doctor Deejay
2002-06-28 18:43
2002.10.14
Прога на другом компе не работает. В проге 3 строчки :(