Форум: "Основная";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
Внизпомогите найти ошибку Найти похожие ветки
← →
9899100 (2008-05-26 17:07) [0]люди помогите найти ошибку, плииз, целый день бьюсь и бестолку
вот скачал со страницы
http://www.delphisources.ru/pages/faq/base/idea_encryption.html
модуль для шифрования IDEA
пример указанный на странице шифрует файлы, все с ними ок!
но как только я начинаю шифровать строки..... все ничего не работает, причем не аботает если длина строки больше 8, но это понятно т.к. алгоритм шифрует токма по 8 байт
вот код
procedure TForm1.Button1Click(Sender: TObject);
Var s1:TMemoryStream;
buf:PChar;
s:String;
l:Integer;
begin
s1:=TMemoryStream.Create;
s:=Edit1.Text;
buf:=StrAlloc(Length(s)+1);
buf:=StrPCopy(buf,s);
s1.Write(buf[0],Length(buf));
s1.position:=0;
EncryptStream(s1,s1.Size,"privet");
s1.Position:=0;
StrDispose(buf);
Buf:=strAlloc(s1.Size+1);
s1.Read(buf[0],s1.size);
buf[s1.Size]:=Char(0);
Label1.Caption:=buf;
//
l:=s1.Size;
s1.Size:=0;
s1.Position:=0;
s1.Write(buf[0],l);
//
DecryptStream(s1,s1.Size,"privet");
strDispose(buf);
Buf:=StrAlloc(s1.Size+1);
s1.Read(buf[0],s1.size);
buf[s1.Size]:=chr(0);
Label2.Caption:=StrPas(buf);
StrDispose(buf);
end;
← →
Palladin © (2008-05-26 17:14) [1]объявление EncryptStream и DecryptStream приведи
← →
9899100 (2008-05-26 17:22) [2]
> Palladin
я в посте сверху пложил ссылку на текст модуля
он в принципе не большой если нада могу кинуть
← →
Palladin © (2008-05-26 17:23) [3]мог посмотреть, не просил бы, не нужен весь модуль, просто объявления
← →
9899100 (2008-05-26 17:27) [4]function EncryptStream(DataStream: TStream; Count: Int64; Key: string): Boolean;
function DecryptStream(DataStream: TStream; Count: Int64; Key: string): Boolean;
там есть пример
работает как часы
а вот почему не работает моя процедура :((
уже весь лоб об стену разбил :)
procedure TForm1.Button1Click(Sender: TObject);
var
SourseStream : TFileStream;
begin
SourseStream := TFileStream.Create(Edit1.Text, fmOpenReadWrite );
EncryptStream(SourseStream, SourseStream.Size, Edit2.Text);
SourseStream.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
SourseStream : TFileStream;
begin
SourseStream := TFileStream.Create(Edit1.Text, fmOpenReadWrite );
DecryptStream(SourseStream, SourseStream.Size, Edit2.Text);
SourseStream.Free;
end;
← →
Palladin © (2008-05-26 17:33) [5]
Function EncryptString(Const s,p_strKey:String):String;
Var
m:TMemoryStream;
Begin
m:=TMemoryStream.Create;
Try
m.Write(s[1],Length(s));
m.Seek(0,soFromBeginning);
EncryptStream(m,Length(s),p_strKey);
m.Seek(0,soFromBeginning);
SetLength(Result,m.Size);
m.Read(Result[1],m.Size);
Finally
m.Free;
End;
End;
Function DecryptString(Const s,p_strKey:String):String;
Var
m:TMemoryStream;
Begin
m:=TMemoryStream.Create;
Try
m.Write(s[1],Length(s));
m.Seek(0,soFromBeginning);
DecryptStream(m,Length(s),p_strKey);
m.Seek(0,soFromBeginning);
SetLength(Result,m.Size);
m.Read(Result[1],m.Size);
Finally
m.Free;
End;
End;
пробуй
← →
9899100 (2008-05-26 17:37) [6]твои работают
так в чем моя ошибка то???
← →
Palladin © (2008-05-26 17:40) [7]в том, что ты пытаешься пятнадцать раз перелить из пустого в порожнее и скорее всего где то на девятом спотыкаешься. вникать в твой код - у меня нет никакого желания, я привел так как должно быть, твоя задача, если интересно, проанализировать свой на предмет тараканов, в любом случае плюнуть и сказать мене пасиба :)
← →
brrr (2008-05-26 17:41) [8]SourseStream := TFileStream.Create(Edit1.Text, fmOpenReadWrite );
тут копай
← →
9899100 (2008-05-26 17:45) [9]
> Palladin
тебе то спасиба я не спорю
но вопрос то был гиде моя ошибка
:)
но я её всетаки нашел !!!!
от тута
s1.Write(buf[0],l);
.... от тут надо перемещать на 0
DecryptStream(s1,s1.Size,"privet");
.... и тут тоже :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c