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

Вниз

kol_twofish   Найти похожие ветки 

 
Deimos ©   (2004-03-12 14:52) [0]

Если кто знает, подскажите пожалуйста
где взять Twofish.Inc ,
kol_twofish на него ссылается, а в архиве с модулем его нет
брал на http://bonanzas.rinet.ru/r_adds.htm#Cryptography


 
Gandalf ©   (2004-03-12 21:34) [1]

Скачай с kol.mastak.ru KOLCryptoLib - это аналог и там все работало


 
Deimos ©   (2004-03-13 01:44) [2]

Всё.. нашел, спасибо, теперь другая проблема :))
суть проблемы такова: необходимо взять первые 256 байт из исходного файла,
зашифровать их ,и сохранить в отдельный файл

я пытался шифровать так :


var
key:pchar;
TFData:TTwofishData;
inblock,outblock:array [0..255]of char;
Source: PStream;
Dest: PStream;

begin
key:="qm3igmfk";

Source:=NewReadFileStream (ParamStr(1));
Dest:=NewWriteFileStream (ParamStr(1)+".2fh");

source.read(inblock,256);

TwofishInit(tfdata,key,8,nil);
twofishencryptcbc(tfdata,inblock,outblock,length(inblock));
TwofishReset(tfdata);
TwoFishBurn(tfdata);

dest.Write(outblock,256);
Source.Free;
dest.Free;
end;


и дешифровать так :


var
key:pchar;
TFData:TTwofishData;
inblock,outblock:array [0..255]of char;
Source: PStream;
Dest: PStream;

begin
key:="qm3igmfk";

Source:=NewReadFileStream (ParamStr(1));
Dest:=NewWriteFileStream (ParamStr(1)+".2fh");

source.read(inblock,256);

TwofishInit(tfdata,key,8,nil);
twofishencryptcbc(tfdata,inblock,outblock,length(inblock));
TwofishReset(tfdata);
TwoFishBurn(tfdata);

dest.Write(outblock,256);
Source.Free;
dest.Free;
end;

в результате получается каша..
что неправильно?
(использовал kol_twofish)


 
Gandalf ©   (2004-03-13 08:28) [3]

Там разве примера нет? Мне кажется или они абсолютно одинаковы... с чего ты взял, что он должно дешифровать?


 
Deimos ©   (2004-03-14 15:10) [4]

о пардон,
дешифровал я так :

var
key:pchar;
TFData:TTwofishData;
inblock,outblock:array [0..255]of char;
Source: PStream;
Dest: PStream;


begin
key:="qm3igmfk" ;

Source:=NewReadFileStream (ParamStr(1));
Dest:=NewWriteFileStream (ParamStr(1)+".2fh");

source.read(outblock,256);

TwofishInit(tfdata,key,8,nil);
TwofishReset(tfdata);
twofishdecryptcbc(tfdata,outblock,inblock,length(outblock));
TwoFishBurn(tfdata);

dest.Write(inblock,256);
Source.Free;
dest.Free;
end.


кстати, пример данный в исходнике KolKryptoLib работает только со строками при попытке подать на вход куска файла на выходе получается мусор (после дешифрования, всмысле).
Там явно нужно что-то изменить, вот только еще-бы знать что ??


 
Deimos ©   (2004-03-15 19:46) [5]

Все с шифрованием я разобрался..
еще одна проблема :
Написал модуль шифрования и хотелось-бы , чтобы при его работе появлялся прогресс-бар, но что-то не выходит..
форма появляется уже после выполнения шифрования сразу с заполненным прогресс-баром..
Где грабли ??

 program Project1;

{$R *.res}

uses
 windows,
 messages,
 kol,
 KOLBlockCipher,
 KOLSHA384;

var
form:Pcontrol;
progress1:Pcontrol;
//********************

procedure start( Dummy : Pointer; Sender: PControl );
var
Source, Dest: pStream;
len: integer;     // длинна куска
cel,ost:integer; // для операций деления
i: integer;     // счетчик

inbuf,outbuf: array [1..1000]of byte;

fish:TKOLBlowfish;
SHA384: TKOLSHA384;
DigSHA384: array [0..47] of byte; // 384 бит на ключ

begin
progress1.Progress:=0;

Source:= NewReadFileStream (ParamStr(1));
cel:=source.Size div 1000; //количество целых оборотов по 1000  байт
ost:=source.Size mod 1000; // остаток

progress1.MaxProgress:=cel;

if ParamStr(2)= "/e" then
Dest:=NewWriteFileStream (ParamStr(1)+".bfs")
else
Dest:=NewWriteFileStream (ChangeFileExt(ParamStr(1),""));

SHA384:= NewSHA384;
SHA384.InitHash; // Инициализируем хеш
SHA384.UpdateStr("password"); // Хешируем пароль
SHA384.Final(DigSHA384); // Получаем захешированный пароль как 384 битный ключ
                        // для blowfish максимум 448 байт

SHA384.Burn;             // Очищаем хеш

len:=1000;         // Устанавливаем длину блока
                 // данных для шифровки/расшифровки
//***********************************************************************
if ParamStr(2) = "/e" then        //если нас просят шифровать
begin
 for i:= cel downto 1 do
 begin
   source.Read(inBuf,len);

   fish:=NewBlowfish;
   fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
      fish.EncryptOFB(inbuf,outbuf,len);   //шифруем
   fish.Burn;
   dest.Write(outBuf,len);           //пишем в конечный файл 384 байта
   progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
 end;
 source.Read(inBuf,ost);  //дочитываем остатки
 fish:=NewBlowfish;
 fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
    fish.EncryptOFB(inbuf,outbuf,ost);   //шифруем остаток
 fish.Burn;
 dest.Write(outBuf,ost);
end
//*********************************************
else           // иначе расшифровываем
   begin
 for i:= cel downto 1 do
 begin
   source.Read(inBuf,len);
   fish:=NewBlowfish;
   fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
      fish.DecryptOFB(inbuf,outbuf,len);  //расшифровываем
   fish.Burn;
   dest.Write(outBuf,len);           //пишем в конечный файл 384 байт
 end;
 source.Read(inBuf,ost);
 fish:=NewBlowfish;
 fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ!!!
    fish.DecryptOFB(inbuf,outbuf,ost);  //расшифровываем
 fish.Burn;
 dest.Write(outBuf,ost);
 progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
end;

source.Free;           // всех освобождаем
dest.free;
fish.Free;
SHA384.free;
end;

//-----------------

begin
form:=newForm(applet, "Идёт упаковка");
form.Width:=304;
form.Height:=40;
progress1:=NewProgressbar(form);
progress1.Height:=10;
progress1.Width:=300;

form.OnShow:= TOnEvent(MakeMethod(nil,@start));
run(form);

end.


 
Gandalf ©   (2004-03-16 09:05) [6]

поставь ProcesMessage


 
Deimos ©   (2004-03-16 18:33) [7]

Где именно?


 
mdw ©   (2004-03-17 10:41) [8]

После изменения Прогресса.
progress1.Progress:= progress1.Progress+1;


 
Deimos ©   (2004-03-18 17:58) [9]

не помогает :(


 
Deimos ©   (2004-03-18 17:58) [10]

не помогает :(


 
Gandalf ©   (2004-03-19 10:24) [11]

А что ты прописал, Applet.ProcesMessages; и не помогло?


 
Deimos ©   (2004-03-20 03:42) [12]

да, именно так и писал....
поставил Applet.ProcesMessages после изменения прогрессБара
прога начала работать без подвисания, но прогрессБар все-равно не показывает.., только после окончания шифрования и сразу заполненный..
может кто-нибудь у себя откомпилирует?
прога должна работать из командной строки
пример: чтобы зашифровать 1.zip

  Project1.exe 1.zip /e

       чтобы расшифровать 1.zip.bfs

  Project1.exe 1.zip.bfs

а то я не знаю уже на что думать...

вот полный код:


program Project1;

{$R *.res}

uses
 windows,
 messages,
 kol,
 KOLBlockCipher,
 KOLSHA384;

var
form:Pcontrol;
progress1:Pcontrol;
//********************

procedure start( Dummy : Pointer; Sender: PControl );
var
Source, Dest: pStream;
len: integer;     // длинна куска
cel,ost:integer; // для операций деления
i: integer;     // счетчик

inbuf,outbuf: array [1..1000]of byte;

fish:TKOLBlowfish;
SHA384: TKOLSHA384;
DigSHA384: array [0..47] of byte; // 384 бит на ключ

begin
progress1.Progress:=0;

Source:= NewReadFileStream (ParamStr(1));
cel:=source.Size div 1000; //количество целых оборотов по 1000  байт
ost:=source.Size mod 1000; // остаток

progress1.MaxProgress:=cel;

if ParamStr(2)= "/e" then
Dest:=NewWriteFileStream (ParamStr(1)+".bfs")
else
Dest:=NewWriteFileStream (ChangeFileExt(ParamStr(1),""));

SHA384:= NewSHA384;
SHA384.InitHash; // Инициализируем хеш
SHA384.UpdateStr("password"); // Хешируем пароль
SHA384.Final(DigSHA384); // Получаем захешированный пароль как 384 битный ключ
                        // для blowfish максимум 448 байт

SHA384.Burn;             // Очищаем хеш

len:=1000;         // Устанавливаем длину блока
                 // данных для шифровки/расшифровки
//***********************************************************************
if ParamStr(2) = "/e" then        //если нас просят шифровать
begin
 for i:= cel downto 1 do
 begin
   source.Read(inBuf,len);
   fish:=NewBlowfish;
   fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
      fish.EncryptOFB(inbuf,outbuf,len);   //шифруем
   fish.Burn;
   dest.Write(outBuf,len);           //пишем в конечный файл 1000 байта
   progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
   applet.ProcessMessages;
 end;
 source.Read(inBuf,ost);  //дочитываем остатки
 fish:=NewBlowfish;
 fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
    fish.EncryptOFB(inbuf,outbuf,ost);   //шифруем остаток
 fish.Burn;
 dest.Write(outBuf,ost);
end
//*********************************************
else           // иначе расшифровываем
   begin
 for i:= cel downto 1 do
 begin
   source.Read(inBuf,len);
   fish:=NewBlowfish;
   fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
      fish.DecryptOFB(inbuf,outbuf,len);  //расшифровываем
   fish.Burn;
   dest.Write(outBuf,len);           //пишем в конечный файл 1000 байт
   progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
   applet.ProcessMessages;

 end;
 source.Read(inBuf,ost);
 fish:=NewBlowfish;
 fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ!!!
    fish.DecryptOFB(inbuf,outbuf,ost);  //расшифровываем
 fish.Burn;
 dest.Write(outBuf,ost);
end;

source.Free;           // всех освобождаем
dest.free;
fish.Free;
SHA384.free;
end;

//-----------------

begin
form:=newForm(applet, "Идёт упаковка");
form.Width:=304;
form.Height:=40;
progress1:=NewProgressbar(form);
progress1.Height:=10;
progress1.Width:=300;

form.OnShow:= TOnEvent(MakeMethod(nil,@start));

run(form);

end.



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

Форум: "KOL";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.034 c
1-1091507493
vic
2004-08-03 08:31
2004.08.22
Есть в delphi функция удаления пробелов в строке слева и справа?


14-1091449022
Ven
2004-08-02 16:17
2004.08.22
Запуск DOS-овской программы под WinXP


1-1091688013
serg128
2004-08-05 10:40
2004.08.22
Как скопировать в буфер всю строку из Grid?


3-1091097877
Fynjy
2004-07-29 14:44
2004.08.22
Можно ли в DBGrid зафиксировать столбец?


14-1091733356
Anonim
2004-08-05 23:15
2004.08.22
Программистам на Delphi посвящается





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