Хэш функция для обнаружния дефектов

Тема в разделе "WASM.A&O", создана пользователем NoName, 14 мар 2006.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Подскажите наиболее надежную хэш функцию для обнаружния точечных искажений в файле или где можно узнать про это.
     
  2. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Если дефекты создает не злоумышленник, а просто они возникают "случайно и равномерно", то подойдет любой код контроля ошибок. Например, CRC32 (его структура и параметры рассчитаны с учетом теории помехоустойчивого кодирования).



    Ну а если хочется бОльшей стойкости, то любая криптостойкая хеш-функция : MD2, MD5, SHA-1, TIGER, RIPEMD, только учти, что они на порядок более медленные.
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    NoName

    Мне понравился код Хэмминга, хоть это и не относится к хэшированию
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    ИМХО нет смысла экономить на спичках - чтение с диска будет гораздо дольше вычисления нормального хеша.
     
  5. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    S_T_A_S_

    без обид :



    на спичках не экономим, а потом спрашиваем, почему софт требует все более и более мощных процессоров



    любая применяемая технология должна быть АДЕКВАТНА задаче -

    если задача найти случайные ошибки, то CRC32 ее решает с уровнем достоверности 1-(2^31), этого мало ?





    пусть в мире 8000 инсталляций твоей программы,

    пусть каждый пользователь запускает ее восемь раз в день

    пусть каждый раз с каждым ее образом случаются какие-то неприятности (crazy !)

    тогда первый случай необнаружения искажения кода для CRC32 произойдет в среднем через 90 лет (надеюсь нигде не ошибся)
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вот здесь, Oleg_SK сравнивал скорость CRC32, MD5 и XOR (!), разницы никакой нет. Даже если применить SHA1, скорость мало изменится. Учитывая, что для применения того или другого часто достаточно украсть подходящий GPL код, то разница в сложности использования равна нулю. Если же писать самому, то разница во времени имплементации смешная.



    А экономить на практически бесплатном преимуществе конечно можно, некоторые и GUIDы боятся генерировать.



    ЗЫ: GUID, кстати, не рекомендуют использовать как имя временного файла даже.
     
  7. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia


    ссылку в студию
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Сам подумай, есть ли вероятность существования файла с таким именем. Особенно в драйвере. А если нужна ссылка как доказательство существования такого мнения - вот. Еще искать лениво.
     
  9. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    А где можно найти математическое доказательство известной вероятности надежности CRC32 и других?
     
  10. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Почитай любую книжку по помехоустойчивому кодированию или по кодам с исправлением ошибок (в т.ч. на русском есть много и советских и парочка современных). Там раздел "циклические коды".
     
  11. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159


    Что такое уровень достоверности и чем он отличается от вероятности обнаружения ошибки, которая есть просто 1-1/(2^32) ?
     
  12. jecxz

    jecxz New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2006
    Сообщения:
    75
    Адрес:
    Brazil
    1-1/(2^32) ?

    по теории вероятности два противоположных события имеют вероятность 1-p, где p - вероятность события

    вероятность обнаружения ошибки 1-1/(2^32)

    вероятность не обнаружения ошибки 1/(2^32)
     
  13. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159


    Не понял смысла замечания. В точности повторяете то, что я написал выше.
     
  14. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Уважаемый RElf !

    Я уже многократно говорил, что очень внимательно отношусь к Вашим замечаниям. Конечно же, Вы совершенно правы - если говорить чисто математическим языком то фраза должна была звучать так :



    „если задача найти случайные ошибки, то CRC32 ее решает, с вероятностью необнаружения ошибки 1-(2^(-32))“
     
  15. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159


    Буду занудой, но 1-(2^(-32)) - это вероятность именно обнаружения,

    вероятность необнаружения равна 2^(-32).
     
  16. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    мстишь ? :derisive:



    да, похоже я сегодня не с той ноги встал :



    если задача найти случайные ошибки, то CRC32 ее решает, с вероятностью необнаружения ошибки (2^(-32))
     
  17. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    Кстати, мне как то раз попался битый RAR-архив у которого контрольная сумма CRC32 не изменилась.
     
  18. RElf

    RElf New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2004
    Сообщения:
    159


    Это знак. Пора идти в казино.
     
  19. Oleg_SK

    Oleg_SK Guest

    Публикаций:
    0
    RElf



    :))) Не, я этим не увлекаюсь. Хотя, когда-то, еще во времена СССР выиграл у однорукого бандита 11 рублей за 15 копеек (это была не хилая сумма).



    З.Ы.: Все, заканчиваю оффтопик.
     
  20. DMD

    DMD Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    56
    RElf

    у меня есть несколько приватных вопросов.

    расчитываю на помощь.

    куда можно задать?

    t0_DMD@mail.ru