Главная страница
    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
3-45214
Soft
2002-09-20 17:35
2002.10.14
Удаление повторяющихся полей с помощью SQL HELPPP!!!!!!


1-45260
ImpPuf
2002-10-04 12:16
2002.10.14
Работа с Excel


14-45582
Vik110
2002-09-20 21:31
2002.10.14
Вопрос об обувных щетках - это курсовая работа


1-45437
AMS
2002-10-03 15:03
2002.10.14
Срочно!! Delphi 6. Перестали загружаться некоторые DFM.


3-45179
Punisher
2002-09-22 12:11
2002.10.14
SQL Explorer





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