Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизШифрование текста Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c