хеш функция

Тема в разделе "WASM.CRYPTO", создана пользователем jeni, 21 май 2007.

  1. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    Мне нужна функция, которая удовлетворяла бы следующим условиям:
    1) Функция должна быть односторонней (необратимой), по результату нельзя восстановить входное значение;
    2) На вход подаются значения от 0 до 0FFFFFFFFh(DWORD);
    3) Коллизий на етом отрезке быть не должно;
    4) Чем меньше функция занимает байт тем лучше =);

    Памагите чем сможете =).
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    дык возьми CRC32 или MD5 - на этом сайте есть. Тока придется малость переделать. Но это уже совсем мелочь.
     
  3. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    зеркало fido7.ru.crypt? =)
    тебе там уже все что можно ответили ))
     
  4. Solo

    Solo New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    131
    довольно странно видеть требование необратимости на таком маленьком входном алфавите :)
     
  5. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    зато выходной алфавит можно больше )
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    тогда точно МД5
     
  7. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Да самому можно написать и брутфорсом проверить.)
     
  8. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    но MD5 большой, мне нужно как можно меньше код
     
  9. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    А что мешает взять сначала MD5, а после все 16 байтов любыми математич. и/или логич. дествиями привести к DWORD ?
    Или ты имел ввиду код самой реализации MD5 ?
     
  10. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Если входной алфавит всего 2^32 то о каком свойстве необратимости (п.1) можно говорить ? Входное значение полным перебором будет найдено на любом Pentium-166.

    По-моему, вы не понимаете то, что хотите. Может опишете предметную область ?
     
  11. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    T800: код самой реализации.
    OLS: А то что перебором ломается, мне так и нужно ;)
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    а что мешает взять готовый исходник с васма?
     
  13. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    MD5 большой, а мне надо как можно меньше
     
  14. UyTvGauG

    UyTvGauG New Member

    Публикаций:
    0
    Регистрация:
    17 май 2007
    Сообщения:
    49
    Эти три условия совершенно несовместимы.
     
  15. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    jeni, MD5 можно не писать, если кодешь под винду, он уже есть в винде реализованный, тока кидаешь данные, получаешь хеш :)
     
  16. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    jeni
    тогда обычный CRC32 и не парься
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    jeni
    Почитай Кнута товарисч... не позорься...
     
  18. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    MSoft
    Покажи пожалуйста код, который удовлетворит 1 условию. И будет достаточно маленьким :)
     
  19. jeni

    jeni Евгений

    Публикаций:
    0
    Регистрация:
    10 мар 2007
    Сообщения:
    41
    TermoSINteZ
    Там ответ на мой вопрос или доказательство удверждения UyTvGauG???
     
  20. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Код (Text):
    1. GetCRC32 proc lpData, dwDataSize:DWORD
    2.     pushad
    3.     xor eax,eax
    4.     mov edx,lpData
    5.     mov ecx,dwDataSize
    6.     cmp ecx,eax
    7.     jnz calc_crc32
    8.     mov edi,edx
    9. @@: scasb
    10.     jnz @B
    11.     dec edi
    12.     mov ecx,edi
    13.     sub ecx,edx
    14.  
    15. calc_crc32:
    16.     not eax
    17. @1: xor al,[edx]
    18.     inc edx
    19.     mov bl,8
    20. @2: shr eax,1
    21.     jnc @3
    22.     xor eax,0EDB88320h
    23. @3: dec bl
    24.     jnz @2
    25.     loop @1
    26.     not eax
    27.     mov [esp+7*4],eax
    28.     popad
    29.     ret
    30. GetCRC32 endp
    но его можно сократить - тут он сам может вычислять длину строки, если dwDataSize=0. Если это убрать, будем совсем маленький