Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1244723130
Mishechka
2009-06-11 16:25
2009.08.09
Как программно связать поле в отчёте FR с полем БД?


15-1244615651
brother
2009-06-10 10:34
2009.08.09
есть у кого Gold аккаунт на depositfiles.com?


15-1244189127
scl20
2009-06-05 12:05
2009.08.09
Создание клиент-серверного приложения в Delphi


1-1211807227
9899100
2008-05-26 17:07
2009.08.09
помогите найти ошибку


15-1244752206
Юрий
2009-06-12 00:30
2009.08.09
С днем рождения ! 12 июня 2009 пятница





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