Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-17257
BlackSun
2003-01-09 17:04
2003.03.06
Server и Client - помогите...


3-16908
RDA
2003-02-13 12:13
2003.03.06
DragDrop в DBTreeList


3-16858
AlexG
2003-02-17 14:46
2003.03.06
Чтение данных из RemoteDateModul


8-17198
s002156Shurik
2002-11-17 15:15
2003.03.06
Как получить данные с АЦП звуковой платы (запись звука)?


1-16984
Diogen
2003-02-21 23:03
2003.03.06
Как програмно определить путь откуда была





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