Кіріспе

Адлер 32 — Марк Адлердің 1995 жылы жазған, Флетчер тексеру қосындысын өзгерткен тексеру алгоритмі. Бірдей ұзындықтағы циклдық артық тексеруге қарағанда, ол сенімділіктен гөрі жылдамдыққа басымдық береді. Адлер 32, Флетчер 16-дан сенімдірек, ал Флетчер 32-ден аздап кем сенімді.

Тарих

Adler 32 тексеру жиынтығы, кеңінен қолданылатын zlib қысым кітапханасының бір бөлігі болып табылады, себебі екеуі де Марк Адлер жасаған. rsync құралында Adler 32-нің "көшпелі тексеру жиынтығы" нұсқасы қолданылады.

Флетчерлік бақылау қосындысымен салыстыру

Екі алгоритмнің арасындағы бірінші айырмашылық – Адлер 32 сомалары жай санға байланысты есептеледі, ал Флетчер сомалары 24-1, 28-1 немесе 216-1 (қолданылған бит санына байланысты) бойынша есептеледі, олардың барлығы құрама сандар. Жай санды қолдану Адлер 32-ге Флетчер анықтай алмайтын байттардың белгілі бір комбинацияларындағы айырмашылықтарды анықтауға мүмкіндік береді. Алгоритмнің жылдамдығына ең үлкен әсер ететін екінші айырмашылық – Адлер сомалары 16 биттік сөздердің орнына 8 биттік байттар бойынша есептеледі, нәтижесінде циклдардың саны екі есеге артады. Бұл Адлер 32 тексеру қосындысының 16 биттік сөздерге сәйкес келген деректер үшін Флетчер тексеру қосындысынан бір жарымнан екі есеге дейін уақытты қажет етуіне себеп болады. Байттарға сәйкес келген деректер үшін Адлер 32 дұрыс іске асырылған Флетчер тексеру қосындысынан (мысалы, Иерархиялық деректер форматында кездесетін) жылдам.

Артықшылықтары мен кемшіліктері

Стандартты CRC 32 сияқты, Adler 32 тексеру қосындысын да оңай бұрмалауға болады, сондықтан ол қасақана өзгертулерден қорғау үшін қауіпсіз емес. Көптеген платформаларда ол CRC 32-ден жылдам. Adler 32 бірнеше жүз байттық қысқа хабарламаларға сезімтал, себебі мұндай хабарламалардың тексеру қосындысы 32 қолжетімді биттің толық қамтуын қамтамасыз етпейді.

Әлсіздік

Адлер 32 қысқа хабарламалар үшін әлсіз, себебі A сомасы толық циклды аяқтамайды. 128 байттық хабарламаның ең жоғары сомасы 32640-қа тең, бұл модульдік амал қолданатын 65521 мәнінен төмен, демек шығыс кеңістігінің шамамен жартысы қолданылмайды, ал қолданылған бөлігіндегі таралу біркелкі емес. Ағын бақылау протоколы SCTP үшін Адлер 32 орнына CRC32C қолдану талап етілетін толыққанды түсіндірмелерді табуға болады. Адлер 32 шағын инкременттік өзгерістерге де, ортақ префикс пен тізбектелген сандардан (әдеттегі код генераторлары автоматты түрде жасайтын белгі атаулары сияқты) жасалған жолдарға да әлсіз екені дәлелденді.