Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Криптография : Какая-то засада с MD5 хэшем

Ответить
Настройки темы
Win32 API | Криптография : Какая-то засада с MD5 хэшем

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85


Конфигурация

Профиль | Отправить PM | Цитировать


Вот текст:
Код: Выделить весь код
	HCRYPTPROV hCryptProv; 
	HCRYPTKEY hKey; 
	HCRYPTHASH hHash; 

	//--------------------------------------------------------------------
	// Get a handle to the default provider. 
	if(!CryptAcquireContext(&hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0))
		MyHandleError("Error during CryptAcquireContext!"); 
	
	//--------------------------------------------------------------------
	// Create a hash object. 
	if(!CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash))
		MyHandleError("Error during CryptCreateHash!");

//Теперь внимание!
BYTE Data[20] = { 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 };
DWORD wDataLen = 20;
CryptGetHashParam(hHash, HP_HASHSIZE, 0, &wDataLen, 0);
printf("size: %d\n", wDataLen);
Почему размер получается 4???

Отправлено: 00:12, 23-11-2006

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Ага, тут понял. в чём дело. 4 - это размер. А само значение получается 16, всё правильно.


Следующая проблема. Как вручную задать точное значение хэша?


проблема тут вот в чё:
если делать так:
Код: Выделить весь код
	UINT mkey[4];
	mkey[0] = (UINT)0x....;
	mkey[1] = (UINT)0x....;
	mkey[2] = (UINT)0x....;
	mkey[3] = (UINT)0x....;

	if (!CryptHashData(hHash, (BYTE*)mkey, 16, 0))
		MyHandleError("Error during CryptHashData!");
то хэш (ключ) будет перефигачен.

а если так,
Код: Выделить весь код
	UINT mkey[4];
	mkey[0] = (UINT)0x....;
	mkey[1] = (UINT)0x....;
	mkey[2] = (UINT)0x....;
	mkey[3] = (UINT)0x....;

	if (!CryptSetHashParam(hHash, HP_HASHVAL, (BYTE*)mkey, 0))
		MyHandleError("Error during CryptSetHashParam!");
, то потом этот хэш не всовывается в CryptDeriveKeyЖ
Код: Выделить весь код
	if(!CryptDeriveKey(hCryptProv, CALG_RC4, hHash, 0x00800000 | CRYPT_NO_SALT, &hKey))
		MyHandleError("Error during CryptDeriveKey!");
даёт ошибку "плохой хэш".

Что делать?

Отправлено: 01:32, 23-11-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Прочитал, что хэш, созданный через HP_HASHVAL надо подписывать.
Но не получается, бред-какой-то... Ыыы...

Отправлено: 11:47, 23-11-2006 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API | Криптография : Какая-то засада с MD5 хэшем

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Win32 API | Hint в StatusBar Ryjka Программирование и базы данных 2 30-07-2006 22:17
Win32 API | Нужна помошь по API функциям! vasika_hk Программирование и базы данных 2 23-05-2006 09:51
Win32 API | Дозвон XCodeR Программирование и базы данных 5 08-04-2006 12:26
Win32 API | Игры с DeferWindowPos pva Программирование и базы данных 2 22-03-2005 10:29
Win32 API | Неизвестные функции Savant Программирование и базы данных 9 02-03-2005 10:18




 
Переход