хеш функция

Discussion in 'WASM.CRYPTO' started by jeni, May 21, 2007.

  1. jeni

    jeni Евгений

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

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

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    дык возьми CRC32 или MD5 - на этом сайте есть. Тока придется малость переделать. Но это уже совсем мелочь.
     
  3. flankerx

    flankerx New Member

    Blog Posts:
    0
    Joined:
    Jul 2, 2004
    Messages:
    423
    Location:
    Moscow, Russia
    зеркало fido7.ru.crypt? =)
    тебе там уже все что можно ответили ))
     
  4. Solo

    Solo New Member

    Blog Posts:
    0
    Joined:
    Jul 11, 2003
    Messages:
    131
    довольно странно видеть требование необратимости на таком маленьком входном алфавите :)
     
  5. jeni

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    зато выходной алфавит можно больше )
     
  6. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    тогда точно МД5
     
  7. asmfan

    asmfan New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2006
    Messages:
    1,004
    Location:
    Abaddon
    Да самому можно написать и брутфорсом проверить.)
     
  8. jeni

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    но MD5 большой, мне нужно как можно меньше код
     
  9. T800

    T800 Member

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

    OLS New Member

    Blog Posts:
    0
    Joined:
    Jan 8, 2005
    Messages:
    322
    Location:
    Russia
    Если входной алфавит всего 2^32 то о каком свойстве необратимости (п.1) можно говорить ? Входное значение полным перебором будет найдено на любом Pentium-166.

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

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    T800: код самой реализации.
    OLS: А то что перебором ломается, мне так и нужно ;)
     
  12. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    а что мешает взять готовый исходник с васма?
     
  13. jeni

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    MD5 большой, а мне надо как можно меньше
     
  14. UyTvGauG

    UyTvGauG New Member

    Blog Posts:
    0
    Joined:
    May 17, 2007
    Messages:
    49
    Эти три условия совершенно несовместимы.
     
  15. Freeman

    Freeman New Member

    Blog Posts:
    0
    Joined:
    Feb 10, 2005
    Messages:
    1,385
    Location:
    Ukraine
    jeni, MD5 можно не писать, если кодешь под винду, он уже есть в винде реализованный, тока кидаешь данные, получаешь хеш :)
     
  16. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    jeni
    тогда обычный CRC32 и не парься
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    jeni
    Почитай Кнута товарисч... не позорься...
     
  18. jeni

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    MSoft
    Покажи пожалуйста код, который удовлетворит 1 условию. И будет достаточно маленьким :)
     
  19. jeni

    jeni Евгений

    Blog Posts:
    0
    Joined:
    Mar 10, 2007
    Messages:
    41
    TermoSINteZ
    Там ответ на мой вопрос или доказательство удверждения UyTvGauG???
     
  20. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    Code (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. Если это убрать, будем совсем маленький