Вопрос по алгоритму расчёта CRC32

Тема в разделе "WASM.CRYPTO", создана пользователем artkar, 16 окт 2010.

  1. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Уважаемые коллеги,
    Обратил внимание на непонятную мне хрень.
    Взял вручную, побитно посчитал CRC32 с полиномом 4C11DB7 - результат не сходиться с тем что дают поблочные алгоритмы???
    смотрите, например, байт 81h (вся строка 1 байт) при зеркальном алгоритме с полиномом EDB88320h должен указывать на ячейку в таблице с предрасчитанными CRC32 на значение EC63F226 (при прямом на 644FC637), а он указывает на 0B7BD5C3Bh и в результате ЦРЦ получается 48BD5C3Bh, чёта никак не вкурю? Разве ЦРЦ 81h д.б. = 48BD5C3Bh?
    Строка с 1-м нулевым байтом походу должна давать полином, а даёт хрен знает что? Растолкуйте тупану пачиму так?
     
  2. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Научись для начала сам создавать эти таблицы, а не бери готовые. Откель потвоему они берутся? Вот как рзз и делят байт*2^32 на полином.
     
  3. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Непонял, причём здесь "создавать таблицы"?
    Вопрос не в таблицах, вопрос почему ЦРЦ 81h = 48BD5C3Bh при табличном алгоритме. Т.е неполучается у меня вручную, на бумашке, насчитать ЦРЦ 48BD5C3Bh для 81h никаким образом... Понимаете?
     
  4. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    У меня получилось, что 81h ячейка должна содержать 9ABFB3B6 =)))

    00000040 xor EDB88320 = EDB88360
    03B6E20D xor EDB88320 = EE0E612D
    77073096 xor EDB88320 = 9ABFB3B6
     
  5. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    потому что там еще вначале FFFFFFFF идет, это не голый байт
     
  6. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Круто, но всиравно непонял :dntknw: почему первый раз 00000040 ????

    Можешь так же расписать но с прямым вариантом (т.е. с полиномом 4C11DB7)?
     
  7. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Ну эт я понял
     
  8. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Смотри, щас придут модеры и мувнут тебя в beginners! =)))

    Самое прикольное, что CRC32 можно ускорить зарелизив его не с одной таблой, а с четырьмя или даже восемью таблицами! С четырьмя таблицами я зарелизил и получил прирост раза в три, а с восьмью я оставил для автора 7zip'а. Не в скорости щастье у crc32!
     
  9. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Почитай Юрова, там были реализации прямого и зеркального.
     
  10. Tronix

    Tronix Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    122
    persicum
    А в SSE4 так вообще команда есть : CRC32, не знаю правда сколько тактов, но наверное меньше чем таблички глядеть. Вообще красота.
     
  11. artkar

    artkar New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2005
    Сообщения:
    400
    Адрес:
    Russia
    Грустно будет :dntknw: там тусоваться с чайниками
     
  12. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Только там полином другой - это точно! Кажется Castagnoli. Вот тебе и вся красота...