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

Вниз

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

 
sagsoft   (2004-03-22 19:44) [0]

Я шифрую текст этим способом:

procedure Code(var text: string; password: string;
 decode: boolean);
var
 i, PasswordLength: integer;
 sign: shortint;
begin
 PasswordLength := length(password);
 if PasswordLength = 0 then Exit;
 if decode
   then sign := -1
   else sign := 1;
 for i := 1 to Length(text) do
   text[i] := chr(ord(text[i]) + sign *
     ord(password[i mod PasswordLength + 1]));
end;

потом сохраняю зашифрованый текст в файл.
а потом разшифровываю его, но почему то он разшифровывается не до
конца размер файла около 100кб

Memo1.Lines.LoadFromFile("1.txt");
 s := Memo1.Text;
 code(s, "123", true);
 Memo1.Text := s;

 Получается вроде этого:

Эх вот раньше рыба была - в воду без трусов не войдешь.
Плохой танцор Фчк  ЫДшТAя!оРТ аз4сгЭЯД7

а с файлами меньшего размере все ОК!

Надеюсь понятно выразился.


 
panov ©   (2004-03-22 19:49) [1]

Не использу потомков от TStrings. У тебя теряются некоторые специальные символы.


 
Юрий Зотов ©   (2004-03-22 19:50) [2]

Похоже, алгоритм шифровки приводит к тому, что какой-то символ превращается в #0. Он и обрезает текст при чтении.


 
sagsoft   (2004-03-22 19:53) [3]

Ну подскажите какой небудь другой способ шифровки, мне лижбы сделать текст не читаемым


 
Defunct ©   (2004-03-22 19:55) [4]

Лучше всего использовать TMemoryStream для шифрования.


 
sagsoft   (2004-03-22 19:57) [5]

извените, может кто даст кодом


 
Piter ©   (2004-03-23 17:57) [6]

sagsoft
ты уверен что алгоритм расшифровки приводит текст точно к такому виду, что он был был до шифрования? Если уверен - то перед сохранением в файл используй:

function StrToAscii(S:String):String;
var I,X:Integer;
   RS:String;
   CurChar:String;
begin
Result := "";
IF Length(S)=0 then Exit;
X:=1;
FOR I:=1 TO Length(S) Do
begin
 CurChar :="#"+Inttostr(Ord(S[I]));
 Insert (CurChar, RS, X);
 X := X + Length(CurChar);
end;
Result := RS;
end;


Передаешь туда зашифрованный текст - получаешь текст, который можно сохранять в файл.

Обратный процесс такой. Считываешь файл, вызываешь такую функцию:

function ASCIIToStr(AsciiString:String):String;
var I, X, L, Lastpos:Integer;
   CurDIGChar, CurrAddChar, RS:String;
begin
RESULT := "";
L := Length(AsciiString);
IF L=0 then Exit;
X:=0;LASTPOS := 1;
REPEAT
 I:=X;
 CurDIGChar := "";
 REPEAT
   I:=I+1;
   IF AsciiString[I]<>"#" then CurDIGChar := CurDIGChar + AsciiString[I];
 UNTIL (AsciiString[I] = "#") or (i=l);
 X:=I;
 IF CurDIGChar <> "" then
 BEGIN
   try
     CurrAddChar :=CHR(STRTOINT(CurDIGChar));
   except CurrAddChar := "";END;
   Insert(CurrAddChar, RS, lastpos);
   LastPos := LastPos + Length(CurrAddChar);
 end;
UNTIL (X >= L) OR (I >= L);
Result := RS;
end;


И то, что она вернет уже расшифровываешь.



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

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1079526339
nikitos
2004-03-17 15:25
2004.04.11
Как сделать форум?


14-1079488343
vidiv
2004-03-17 04:52
2004.04.11
Как скрыть код php?


1-1082354460
Viktor
2004-04-19 10:01
2004.04.11
html


1-1082440830
Alex21
2004-04-20 10:00
2004.04.11
Tstringgrid


14-1079445716
Kerk
2004-03-16 17:01
2004.04.11
Посоветуйте бесплатный хостинг с perl и без банеров.