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

Вниз

Прошу помочь с кодом, перевод типов   Найти похожие ветки 

 
Urvin   (2005-01-27 23:24) [0]

function Crypt(CryptStr: string; Passw: string): string;
var
 lentext: integer;
 lenpass: integer;
 cn: integer;
 d: string;
begin
 lentext:= length(CryptStr);
 lenpass:= length(Passw);

 for cn:= 1 to lentext do begin
   d:= trim(IntToStr(Ord(Copy(CryptStr,cn,1)) xor Ord(Copy(Passw,((cn-1) mod lenpass) + 1,1))));

   case StrToInt(d) of
     0..9 : d := "00" + d;
     10..99 : d:= "0" + d;
   end;

   result:=result + d;
 end;
end;

function Decrypt(DecryptStr: String; Passw: string): String;
var
 lentext: integer;
 lenpass: integer;
 cn: integer;
begin
 lentext:= length(DecryptStr);
 lenpass:= length(Passw);

 cn:=1;
 while cn <= lentext do begin
   result:=result + Chr(StrToInt(Copy(Decryptstr,cn,3)) xor ord(Copy(passw,(Trunc(cn/3) mod lenpass) + 1,1)));
   cn:=cn+3;
 end;
end;

В первой функции ругается на каждый ORD, а во второй - на внутренности CHR.
Если во втором что-то понятно - надо из Integer перевестии в Byte (как это сделать?), то в первом вообще никак.
Помогите пожалуйста!


 
Просто Джо ©   (2005-01-28 00:15) [1]

Ord ожидает аргрумент типа Char, ты ему подсовываешь строку, хоть и односимвольную:


> Ord(Copy(CryptStr,cn,1))


Нужно так:

Ord(Copy(CryptStr,cn,1)[1])


> надо из Integer перевестии в Byte (как это сделать?),


Так:


> Chr(Byte(StrToInt(Copy(Decryptstr,cn,3)))


 
REA   (2005-01-28 10:08) [2]

Copy(CryptStr,cn,1)[1] не тоже самое, что CryptStr[cn]?


 
Просто Джо ©   (2005-01-28 10:09) [3]


> [2] REA   (28.01.05 10:08)
> Copy(CryptStr,cn,1)[1] не тоже самое, что CryptStr[cn]?


Адназначна! :o)


 
Gero ©   (2005-01-28 10:11) [4]


> Copy(CryptStr,cn,1)[1] не тоже самое, что CryptStr[cn]?

То же.


 
REA   (2005-01-28 10:16) [5]

trim(IntToStr) - а Trim то зачем?


 
Poirot ©   (2005-01-28 10:22) [6]

Gero ©   (28.01.05 10:11) [4]
Не тоже:)
По сути да, а по принципу получения оочень разные и вещи.. и последнее рациональнее:)


 
Erik1 ©   (2005-01-28 11:07) [7]

И вобще жуть по производительности написана. Хотя бы так сделал:
Result := InputStr;
for i := 1 to Length(Result) do
Result[i] := Byte(Result[i]) xor Mask;
Тогда одна процедура на Crypt и Decrypt будет :) А Mask надо из пароля сделать как Byte(passw[(Trunc(cn/3) mod lenpass) + 1])


 
Gero ©   (2005-01-28 12:03) [8]


> По сути да, а по принципу получения оочень разные и вещи

И по сути, и по принципу одинаковы.


 
Poirot ©   (2005-01-28 12:13) [9]

Gero ©   (28.01.05 12:03) [8]
Абсолютно голословные утверждения...
Хотите поспорить!? Хорошо...
Copy(CryptStr,cn,1)[1] - это выделается новый блок памяти и туда копируется блок в 1 символ и потом берём знаечение от нового буффера...
CryptStr[1] - в этом случае мы работаем с исходным блоком данных..
Есть возражения, где-то я напутал?! при условии что в первом случае используется выхзов функции, то как тут может быть принцип одинаковый?!
Суть - мы получили первый символ, а принципы получения разные!
Есть ещё вопросы?!



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

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

Наверх




Память: 0.46 MB
Время: 0.036 c
3-1105162091
va
2005-01-08 08:28
2005.02.13
БД - IntraWeb


3-1106033256
Бизон
2005-01-18 10:27
2005.02.13
Событие выбора из PickList в DBGride


1-1106934373
Юрий К
2005-01-28 20:46
2005.02.13
RichEdit и Unicode.


1-1107259415
Tornado
2005-02-01 15:03
2005.02.13
Где найти DBChart???


14-1106387500
DSKalugin
2005-01-22 12:51
2005.02.13
восстановление информации на CD-R?





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