{{위키데이터 속성 추적}}
'''애들러-32'''({{lang|en|Adler-32}})는 1995년 [[마크 애들러]]가 발명한 [[체크섬]] [[알고리즘]]으로서<ref>[http://zlib.net/fossils/zlib-0.71.tar.gz First appearance of Adler-32 (see ChangeLog and adler32.c)]</ref> [[플레처의 체크섬|플레처 체크섬]]의 수정판이다. 동일한 길이의 [[순환 중복 검사]]와 비교하면, 속도에 대해 신뢰성을 타협한다. (즉, 속도를 더 우선한다) 애들러-32는 [[플레처-16]]보다 더 미더우며, [[플레처-32]]보다는 다소 덜 신뢰할만하다.<ref>[http://www.zlib.net/maxino06_fletcher-adler.pdf Revisiting Fletcher and Adler Checksums]</ref>

== 역사 ==
애들러-32 체크섬은 널리 쓰이는 [[zlib]] 압축 라이브러리의 일부이며, 이 또한 [[마크 애들러]]가 개발한 것이다. [[롤링 체크섬]] 버전의 애들러-32는 [[rsync]] 유틸리티에 사용된다.

== 예 ==
[[ASCII]] 문자열 "<code>Wikipedia</code>"의 애들러-32의 합은 다음과 같이 계산된다:
{| class="wikitable" border="1"
|-
!문자
!ASCII 코드
!
! colspan="3" | A
!
! colspan="3" | B
|-
| colspan="12" | <small>(10진으로 표기)</small>
|-
|   W
| style="text-align: right" |87  || 
| style="text-align: right; border-right: hidden" |    1 +
| style="text-align: right; border-right: hidden" |  87 =
| style="text-align: right" |  88 || 
| style="text-align: right; border-right: hidden" |    0 +
| style="text-align: right; border-right: hidden" |  88 =
| style="text-align: right" |   88
|-
|   i
| style="text-align: right" |105 || 
| style="text-align: right; border-right: hidden" |   88 +
| style="text-align: right; border-right: hidden" | 105 =
| style="text-align: right" | 193 || 
| style="text-align: right; border-right: hidden" |   88 +
| style="text-align: right; border-right: hidden" | 193 =
| style="text-align: right" |  281
|-
|   k
| style="text-align: right" |107 || 
| style="text-align: right; border-right: hidden" |  193 +
| style="text-align: right; border-right: hidden" | 107 =
| style="text-align: right" | 300 || 
| style="text-align: right; border-right: hidden" |  281 +
| style="text-align: right; border-right: hidden" | 300 =
| style="text-align: right" |  581
|-
|   i
| style="text-align: right" |105 || 
| style="text-align: right; border-right: hidden" |  300 +
| style="text-align: right; border-right: hidden" | 105 =
| style="text-align: right" | 405 || 
| style="text-align: right; border-right: hidden" |  581 +
| style="text-align: right; border-right: hidden" | 405 =
| style="text-align: right" |  986
|-
|   p
| style="text-align: right" |112 || 
| style="text-align: right; border-right: hidden" |  405 +
| style="text-align: right; border-right: hidden" | 112 =
| style="text-align: right" | 517 || 
| style="text-align: right; border-right: hidden" |  986 +
| style="text-align: right; border-right: hidden" | 517 =
| style="text-align: right" | 1503
|-
|   e
| style="text-align: right" |101 || 
| style="text-align: right; border-right: hidden" |  517 +
| style="text-align: right; border-right: hidden" | 101 =
| style="text-align: right" | 618 || 
| style="text-align: right; border-right: hidden" | 1503 +
| style="text-align: right; border-right: hidden" | 618 =
| style="text-align: right" | 2121
|-
|   d
| style="text-align: right" |100 || 
| style="text-align: right; border-right: hidden" |  618 +
| style="text-align: right; border-right: hidden" | 100 =
| style="text-align: right" | 718 || 
| style="text-align: right; border-right: hidden" | 2121 +
| style="text-align: right; border-right: hidden" | 718 =
| style="text-align: right" | 2839
|-
|   i
| style="text-align: right" |105 || 
| style="text-align: right; border-right: hidden" |  718 +
| style="text-align: right; border-right: hidden" | 105 =
| style="text-align: right" | 823 || 
| style="text-align: right; border-right: hidden" | 2839 +
| style="text-align: right; border-right: hidden" | 823 =
| style="text-align: right" | 3662
|-
|   a
| style="text-align: right" |97  || 
| style="text-align: right; border-right: hidden" |  823 +
| style="text-align: right; border-right: hidden" |  97 =
| style="text-align: right" | 920 || 
| style="text-align: right; border-right: hidden" | 3662 +
| style="text-align: right; border-right: hidden" | 920 =
| style="text-align: right" | 4582
|}

 A =  920 =  0x398  (base 16)
 B = 4582 = 0x11E6
 출력 = 0x11E6 << 16 + 0x398 = 0x11E60398

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{IETF RFC|1950}} – specification, contains example [[C (프로그래밍 언어)|C]] code
* [http://zlib.net ZLib] – implements the Adler-32 checksum in [https://github.com/madler/zlib/blob/v1.2.11/adler32.c adler32.c]
* [https://www.google.com/chrome Chrome] – uses an [[SIMD]] implementation of Adler-32 [https://chromium.googlesource.com/chromium/src/third_party/zlib/+/master/adler32_simd.c adler32_simd.c]
* {{IETF RFC|3309}} – information about the short message weakness and related change to SCTP

{{전거 통제}}

[[분류:체크섬 알고리즘]]