запрос комментариев к контрольной сумме rsp32 - PullRequest
0 голосов
/ 18 ноября 2009

Этот исходный код основан на adler32

По-видимому, обеспечивает тот же уровень безопасности crc32, но на 50% быстрее

Если у него есть недостаток, может кто-нибудь показать мне, где этот недостаток и почему лучше остаться с crc32?

Нелегко найти коллизии данных на том же уровне, что и crc32, по крайней мере, в моих тестах

unsigned int rsp32 (unsigned int adler, const unsigned char *buf, unsigned int len)
{
     uchar  s1 = adler & 0xff;
     uchar  s2 = (adler >> 8) & 0xff;
     uchar  s3 = (adler >> 16) & 0xff;
     uchar  s4 = (adler >> 24) & 0xff;
     int    svansa = 0;
     int    ok12 = len;

     if (buf == NULL)
       {
        return 1L;
       }

     while (ok12)
       {
        s1 += buf[svansa++];
        s2 += s1;
        s3 += s2;
        s4 += s3;
        ok12--;
       }

     return s1 + (s2 << 8) + (s3 << 16) + (s4 << 24);
}

1 Ответ

0 голосов
/ 18 ноября 2009

Он, безусловно, обеспечивает тот же уровень безопасности, что и crc32, который "вообще не защищен". Контрольные суммы CRC и ADLER не являются криптографическими хэшами и не предназначены для противодействия преднамеренным атакам. Они предназначены для защиты от непреднамеренных ошибок, таких как линейный шум, и все.

Сказав это, это выглядит как разумная контрольная сумма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...