Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Адлер 32 — Марк Адлердің 1995 жылы жазған, Флетчер тексеру қосындысын өзгерткен тексеру алгоритмі. Бірдей ұзындықтағы циклдық артық тексеруге қарағанда, ол сенімділіктен гөрі жылдамдыққа басымдық береді. Адлер 32, Флетчер 16-дан сенімдірек, ал Флетчер 32-ден аздап кем сенімді.
Adler 32 is a checksum algorithm written by Mark Adler in 1995, modifying Fletcher's checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed. Adler 32 is more reliable than Fletcher 16, and slightly less reliable than Fletcher 32.
Тарих
Adler 32 тексеру жиынтығы, кеңінен қолданылатын zlib қысым кітапханасының бір бөлігі болып табылады, себебі екеуі де Марк Адлер жасаған. rsync құралында Adler 32-нің "көшпелі тексеру жиынтығы" нұсқасы қолданылады.
The Adler 32 checksum is part of the widely used zlib compression library, as both were developed by Mark Adler. A "rolling checksum" version of Adler 32 is used in the rsync utility.
Флетчерлік бақылау қосындысымен салыстыру
Екі алгоритмнің арасындағы бірінші айырмашылық – Адлер 32 сомалары жай санға байланысты есептеледі, ал Флетчер сомалары 24-1, 28-1 немесе 216-1 (қолданылған бит санына байланысты) бойынша есептеледі, олардың барлығы құрама сандар. Жай санды қолдану Адлер 32-ге Флетчер анықтай алмайтын байттардың белгілі бір комбинацияларындағы айырмашылықтарды анықтауға мүмкіндік береді. Алгоритмнің жылдамдығына ең үлкен әсер ететін екінші айырмашылық – Адлер сомалары 16 биттік сөздердің орнына 8 биттік байттар бойынша есептеледі, нәтижесінде циклдардың саны екі есеге артады. Бұл Адлер 32 тексеру қосындысының 16 биттік сөздерге сәйкес келген деректер үшін Флетчер тексеру қосындысынан бір жарымнан екі есеге дейін уақытты қажет етуіне себеп болады. Байттарға сәйкес келген деректер үшін Адлер 32 дұрыс іске асырылған Флетчер тексеру қосындысынан (мысалы, Иерархиялық деректер форматында кездесетін) жылдам.
The first difference between the two algorithms is that Adler 32 sums are calculated modulo a prime number, whereas Fletcher sums are calculated modulo 24−1, 28−1, or 216−1 (depending on the number of bits used), which are all composite numbers. Using a prime number makes it possible for Adler 32 to catch differences in certain combinations of bytes that Fletcher is unable to detect. The second difference, which has the largest effect on the speed of the algorithm, is that the Adler sums are computed over 8 bit bytes rather than 16 bit words, resulting in twice the number of loop iterations. This results in the Adler 32 checksum taking between one and a half to two times as long as Fletcher's checksum for 16 bit word aligned data. For byte aligned data, Adler 32 is faster than a properly implemented Fletcher's checksum (e. g., one found in the Hierarchical Data Format).
Артықшылықтары мен кемшіліктері
Стандартты CRC 32 сияқты, Adler 32 тексеру қосындысын да оңай бұрмалауға болады, сондықтан ол қасақана өзгертулерден қорғау үшін қауіпсіз емес. Көптеген платформаларда ол CRC 32-ден жылдам. Adler 32 бірнеше жүз байттық қысқа хабарламаларға сезімтал, себебі мұндай хабарламалардың тексеру қосындысы 32 қолжетімді биттің толық қамтуын қамтамасыз етпейді.
Like the standard CRC 32, the Adler 32 checksum can be forged easily and is therefore unsafe for protecting against intentional modification. It's faster than CRC 32 on many platforms. Adler 32 has a weakness for short messages with a few hundred bytes, because the checksums for these messages have a poor coverage of the 32 available bits.
Әлсіздік
Адлер 32 қысқа хабарламалар үшін әлсіз, себебі A сомасы толық циклды аяқтамайды. 128 байттық хабарламаның ең жоғары сомасы 32640-қа тең, бұл модульдік амал қолданатын 65521 мәнінен төмен, демек шығыс кеңістігінің шамамен жартысы қолданылмайды, ал қолданылған бөлігіндегі таралу біркелкі емес. Ағын бақылау протоколы SCTP үшін Адлер 32 орнына CRC32C қолдану талап етілетін толыққанды түсіндірмелерді табуға болады. Адлер 32 шағын инкременттік өзгерістерге де, ортақ префикс пен тізбектелген сандардан (әдеттегі код генераторлары автоматты түрде жасайтын белгі атаулары сияқты) жасалған жолдарға да әлсіз екені дәлелденді.
Adler 32 is weak for short messages because the sum A does not wrap. The maximum sum of a 128 byte message is 32640, which is below the value 65521 used by the modulo operation, meaning that roughly half of the output space is unused, and the distribution within the used part is nonuniform. An extended explanation can be found in , which mandates the use of
CRC32C instead of Adler 32 for SCTP, the Stream Control Transmission Protocol. Adler 32 has also been shown to be weak for small incremental changes, and also weak for strings generated from a common prefix and consecutive numbers (like auto generated label names by typical code generators).