Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

HMAC MD5 Реализация на Си

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 07.07.2016, 23:03   #1
 Разведчик
Аватар для iamamiwhoami
 
iamamiwhoami никому не известный тип
Регистрация: 03.07.2016
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию HMAC MD5 Реализация на Си

Нужна помощь с шифрованием строки HMAC. Проблема в том, что я получаю отличные друг от друга хэши, с одинаковыми входными данными, то есть строки для шифровки и ключа. "Свою" реализацию делаю на C, код не мой конечно, но в поиске примеров попадается очень часто. Сверяю его с хэшем полученным на C#, тот, что я получаю на C# верный, он мне и нужен, на С он отличается.



Код:
  unsigned char md5_lwp[MD5_DIGEST_LENGTH];
  const char    s_key[]   = { 0x23, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xbf, 0xb6, 0x62, 0x85, 0x42, 0xed, 0xd5 };
  unsigned char k_ipad[65];
  unsigned char k_opad[65];

  memset ( k_ipad, 0, sizeof ( k_ipad ) );
  memset ( k_opad, 0, sizeof ( k_opad ) );
  memcpy ( k_ipad, s_key, hash_size );
  memcpy ( k_opad, s_key, hash_size );
  
  for ( int i = 0; i < 64; i++ ) {
    k_ipad[i] ^= 0x36;
    k_opad[i] ^= 0x5c;
  }

  MD5_CTX md5_ctx;

  /* k_ipad */
  MD5_Init   ( &md5_ctx );
  MD5_Update ( &md5_ctx, k_ipad, 64 );
  MD5_Update ( &md5_ctx, lwp, strlen ( lwp ) );
  MD5_Final  ( md5_lwp, &md5_ctx );

  /* k_opad */
  MD5_Init   ( &md5_ctx );
  MD5_Update ( &md5_ctx, k_opad, 64 );
  MD5_Update ( &md5_ctx, md5_lwp, hash_size );
  MD5_Final  ( md5_lwp, &md5_ctx );
C#
Код:
private byte[] GetHash(byte[] key, byte[] data)
{
  MD5 md5 = MD5.Create();
  return new HMACMD5(md5.ComputeHash(data)).ComputeHash(key);
}
Что я делаю не так ? Опыта работы с openssl мало, не стукайте
  Ответить с цитированием
Старый 08.07.2016, 03:00   #2
 Разведчик
Аватар для DDD03
 
DDD03 никому не известный тип
Регистрация: 18.05.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

Из куска кода не фига не понял((..
Если openssl не обязателен то погугли в сторону wincrypt, в инете много примеров как работать с этой либой и про реализацию на ней HMACMD5 тоже есть.

Последний раз редактировалось DDD03; 08.07.2016 в 03:09.
  Ответить с цитированием
Старый 08.07.2016, 03:09   #3
 Разведчик
Аватар для iamamiwhoami
 
iamamiwhoami никому не известный тип
Регистрация: 03.07.2016
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

> Из куска кода не фига не понял((..
А больше и не надо.
> Погугли в сторону wincrypt, в инете много примеров как работать с этой либой и про реализацию на ней HMACMD5 тоже есть.
У меня linux, никакие wincrypt.
  Ответить с цитированием
Старый 08.07.2016, 16:08   #4
 Разведчик
Аватар для DDD03
 
DDD03 никому не известный тип
Регистрация: 18.05.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

> А больше и не надо.
А вот грубить не нада,с openssl я не сталкивался поэтому не понел не чего.

Про linux вы не чего не писали, тут на форуме в основном пишут под С# и паскаль под window, мало кто пишут на С/С++.
  Ответить с цитированием
Старый 08.07.2016, 16:14   #5
 Разведчик
Аватар для iamamiwhoami
 
iamamiwhoami никому не известный тип
Регистрация: 03.07.2016
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

> А вот грубить не нада,с openssl я не сталкивался поэтому не понел не чего.
Кто грубил-то ? Никто не грубил, реализация hmacmd5 вся что есть, ну за исключением разве что переменных, но на понимание это никак не влияет.
> Про linux вы не чего не писали, тут на форуме в основном пишут под С# и паскаль под window, мало кто пишут на С/С++.
Очень жаль.
  Ответить с цитированием
Старый 08.07.2016, 16:18   #6
 Разведчик
Аватар для DDD03
 
DDD03 никому не известный тип
Регистрация: 18.05.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

Прошу прощения если не правильно расталкавал фразу, тяжелый день на работе...(
  Ответить с цитированием
Старый 08.07.2016, 16:48   #7
 Разведчик
Аватар для iamamiwhoami
 
iamamiwhoami никому не известный тип
Регистрация: 03.07.2016
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: HMAC MD5 Реализация на Си

Всё, решил проблему. Достаточно было понять как работает этот код.
Код:
private byte[] GetHash(byte[] key, byte[] data)
{
  MD5 md5 = MD5.Create();
  return new HMACMD5(md5.ComputeHash(data)).ComputeHash(key);
}
Или более наглядно.
Код:
private byte[] GetHash(byte[] key, byte[] data)
{
  MD5 md5 = MD5.Create();
  HMACMD5 hmac = new HMACMD5(md5.ComputeHash(data));
  return hmac.ComputeHash(key);
}
И всё станет понятно. Тему можно закрывать.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Реализация сервера SureFIRE Вопросы и ответы, обсуждения 0 19.01.2016 10:29
[Подсказка] Паблик и его реализация Tricksa Треп 18 01.12.2013 21:35
[Обсуждение] Реализация сервера 1.4.5. vanek31 Общение и обсуждение Perfect World 13 24.01.2013 02:27
[Продам] Реализация кинар на AionLegend DezFafara Aion 0 30.10.2011 12:40

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 02:12.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net