Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизКто работал с Найти похожие ветки
← →
Николай В. (2003-02-25 14:31) [0]Уважаемые, коллеги, подскажите!
Кто работал с "DCPcrypt Cryptographic Component Library v2 Beta 3"?
Как зашифрованную ней строку расшифровать не в Delphi (в Perl) и наоборот? Почему разные значения?
← →
mrcat (2003-02-25 15:17) [1]не понял чего ты хочешь...
не расшифровывает что-ли? в чем проблема-то?
← →
Николай В. (2003-02-25 15:57) [2]Шифрованная строка BlowFish"ем из DCPCrypt не совпадает с шифрованной строкой BlowFish"ем другими библиотеками (Base64 отключал).
А нужно в моей программе зашифровать строку, сохранить в файл и скриптом Perl прочитать ее.
Строки разные...
← →
mrcat (2003-02-25 16:01) [3]>>Шифрованная строка BlowFish"ем из DCPCrypt
не знаю как насчет других библиотек, но проверь DCPCrypt"вый
BlowFish на тестовых векторах.
Что-то подобное было и у меня в DCPCrypt - пришлось Serpent ручками править :(
← →
Николай В. (2003-02-25 16:15) [4]Проверял, все проходит без проблем.
Но там вызывается ЕСВ, а в их функциях типа EncryptString вызываются СВС и др.
Помоему проблема в инициализации ключа и инит-ветора, что-то там с ними делается. Сейчас разбираюсь, что.
← →
mrcat (2003-02-25 16:23) [5]
var
Data: string;
Key: THash256; // размер ключа в битах!
...
with TSerpent.Create do
begin
Init(Key, SizeOf(Key) * 8, nil);
EncryptString(Data);
Burn;
Destroy;
end;
end;
← →
mrcat (2003-02-25 16:28) [6]
пардон, в байтах =))
← →
Николай В. (2003-02-25 16:37) [7]Спасибо, ув. Mrcat. Так и делаю.
Ключ хэширую, передаю в EncryptString, но результаты разные!
Что не так?
← →
mrcat (2003-02-25 16:49) [8]
function Tcipher.EncryptString(const Str: string): string;
begin
SetLength(Result, Length(Str));
Encrypt(Str[1], Result[1], Length(Str));
end;
procedure Tblockcipher.Encrypt(const Indata; var Outdata; Size: longword);
begin
case fCipherMode of
cmCBC: EncryptCBC(Indata, Outdata, Size);
cmCFB8bit: EncryptCFB8bit(Indata, Outdata, Size);
cmCFBblock: EncryptCFBblock(Indata, Outdata, Size);
cmOFB: EncryptOFB(Indata, Outdata, Size);
cmCTR: EncryptCTR(Indata, Outdata, Size);
end;
end;
т.о. вектор инициализации отпадает. попробуй поменять режим, раз нет уверенности, что на другой стороне СВС
← →
mrcat (2003-02-25 16:56) [9]вызывай непосредственно:
procedure TSerpent.EncryptECB(const InData; var OutData);
а неEncryptString
← →
Николай В. (2003-02-25 17:14) [10]Это тоже пробовал - не совпадает ни один.
Разберался с их примерами и вот, что понял.
В DCP_blowfish1.SelfTest (контрольный пример, все совпадает) вызывется процедура EncryptECB (ей строку нужно передавать по 8 байт), в остальные всех Encryptnnn идет вызов EncryptECB и дление строки по 8 байт.
В SelfTest такой вызов: Cipher.EncryptECB(InData1,Data) (после инициализации).
Я проверяю на примере EncryptCBC. Там перед вызовом EncryptECB вызывается:
Move(p1^,p2^,8);
XorBlock(p2^,CV,8);
EncryptECB(p2^,p2^);
Т.е. перед вызовом EncryptECB уже не та строка какую я передал, не пойму зачем XorBlock?
← →
mrcat (2003-02-25 17:48) [11]XorBlock - это сложение по модулю 2.
в режиме CBC блок открытого текста складывается по модулю 2 с предыдущим блоком шифртекста (CV), после чего подвергается шифрованию в режиме ECB.
вообще - было бы интересно взгянуть, что там с другой библиотекой =)
← →
Николай В. (2003-02-25 17:55) [12]Завтра продолжим. Домой пора.
← →
Николай В. (2003-02-26 10:06) [13]Ув. Mrcat, спасибо за помощь.
Разобрался что к чему. Проблема была в том, что нужно задать одинаковый вектор-инициализации и еще в том, что MD5 - 16 байтный (128 бит), а я обращался как к SHA1 (160 битный) и в последних 4-х байтах получались расхождения.
← →
mrcat (2003-02-26 10:53) [14]бааалин!!!!
Уже весь DCPCrypt v2b3 "перлопатил" - нифига, все там нормально =)))))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.015 c