๋ด๊ฐ ๊ณ์ํด์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ์ค ํ๋๋ ํด์๊ฐ ์ด๋ป๊ฒ ์ฒดํฌ์ฌ์ด ๋ ์ ์๋์ง (๋๋ ๊ทธ๋์ผํ๋์ง ์ฌ๋ถ)์ ๋๋ค. ์๋ํ๋ฉด ์ ํต์ ์ผ๋ก ํด์๋ ๋ฌธ์์ด๊ณผ ํด์ ํ ์ด๋ธ์ ์ต์ ํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค (DJB2๋ ์ค๋๋ ํฌ์ด ์ข์ํ๋ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค). ๊ทธ๋ฌ๋ PIC / Arduino ๊ตฐ์ค ๋ด์์ ์ฌ๋๋ค์ ์ฌ์ ํ โโ์ค๋๋ ๊ฐ๋จํ 8 ๋นํธ ์ฒดํฌ์ฌ, 16 ๋นํธ Fletcher ํฉ๊ณ ๋๋ 16 ๋นํธ CRC๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋๋ ์ ๋ ๋น ๋ฅธ ํ๋ก์ธ์๋ก ๋ ๋์ ์ ํ์ด ๋ ์์๋ ์๋ก์ด ์ฒดํฌ์ฌ์ ๋ํ ์ด์ผ๊ธฐ๋ ๋ง์ง ์์ต๋๋ค. ํด์์์ ์ฌ์ฉ๋๋ ๊ณ์ฐ ์ ํ์ด ๋๋ฌด ๋๋ฆฝ๋๊น? (CRC๊ฐ ์ค์ ๋ก ์ํํธ์จ์ด์์ xxHash๋ณด๋ค ๋๋ฆฌ์ง ๋ง ..) ์๋๋ฉด 8 ๋นํธ ๋๋ 16 ๋นํธ๋ก ์ถ์ ํ ๋ ๋ณธ์ง์ ์ผ๋ก ํด์ ํจ์์ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
xxHash๋ ๋จผ์ lz4์ ์ฒดํฌ์ฌ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, SeaHash์ ๊ฐ์ ์ผ๋ถ ๋ค๋ฅธ ํด์ ํจ์๋ ์ฒดํฌ์ฌ ์ฉ์ผ๋ก๋ ํ์ผ ์์คํ ์์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์๋ค๊ณ ์ฝ์์ต๋๋ค. ๋น๊ต๋ฅผ ์ํด CRC-32๋ ์ผ๋ถ ์์ถ ํ์ (์ : ZIP / RAR)์์๋ ๋๋ฆฌ ์ฌ์ฉ๋์์ต๋๋ค. ๋๋ ๋ํ CRC๊ฐ ํน์ ๋คํญ์ ๋ฑ์ ๋ํ ์ค๋ฅ ๊ฐ์ง๋ฅผ์ํ ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ฆ๋ช ํ๋ ํน์ ์ํ์ ์์ฑ์ ๊ฐ์ง๊ณ ์์์ ์ฝ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ๋ฉด์์ ํด์๋ ๋ ํผ๋์ค๋ฝ๊ณ ์์ฌ ์ ์์ฑ๊ธฐ์ ๋ ์ ์ฌํ๋ฉฐ ๊ทธ๋ฌํ ๋ณด์ฅ์ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ต๋๋ค. ๋์๊ฒ ์ด๋ป๊ฒ ๋ณด์ด๋์ง.
์ด๋ก ์ธํด ์๋ ์ ํ๊ฐ ์๋๋ผ๋ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ํด์ ๊ตฌํ๋ณด๋ค๋ ๋ฌด๊ฒฐ์ฑ ๋ชฉ์ ์ผ๋ก CRC-32๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์์ง ๊ถ๊ธํฉ๋๋ค. xxHash๋ ์ค๋ฅ ๊ฐ์ง๋ฅผ ๋ณด์ฅํฉ๋๊น (32 ๋นํธ ๋ฒ์ ์ผ๋ก ๊ฐ์ )? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฒดํฌ์ฌ ๋๋ ์ค๋ฅ ๊ฐ์ง ์ฝ๋๋ก์ CRC-32์ ์ด๋ป๊ฒ ๊ฒฝ์ํฉ๋๊น? ์ฅ๋จ์ ์ ๋ฌด์์ ๋๊น?
CRC ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ผ๋ก ํด๋ฐ ๊ฑฐ๋ฆฌ ์กฐ๊ฑด์์ ์ค๋ฅ ๊ฐ์ง๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ ํ๋ ์์ ๋นํธ ํ๋ฆฝ์ด ์ฃผ์ด์ง๋ฉด CRC๋ _ ํ์ํ๊ฒ _ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๊ฒ์ ์ค๋ฅ๊ฐ ๋ช ๋นํธ ๋ง ๋ค์ง๋ ๊ฒ์ผ๋ก ์ถ์ ๋๋ ์ํฉ์์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
๋ถ๊ณผ ์์ญ ๋
์ ๋งํด๋ ์ด๋ ๊ธฐ๋ณธ ์ ํธ๊ฐ ์ฌ์ ํ ๋งค์ฐ "์์"์๊ธฐ ๋๋ฌธ์ ํนํ ์ ์ก ์๋๋ฆฌ์ค์์ ์๋์ ์ผ๋ก ํํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ฌผ๋ฆฌ ๊ณ์ธต์์ ๊ฐ์ง๋์ง ์์ ๋นํธ ํ๋ฆฝ์ด ๋ฌธ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋์ด ์์ฑ์๋ ๋ฐฐํฌ ๋น์ฉ์ด ์์ต๋๋ค. "์์ ํ"ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋์ผ๋ฉด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋น ์ง๋๋ค. ์ด๊ฒ์ ๋น๋๊ธฐ ๊ตฌ๋ฉ ์์น์ ๋ ผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๋๋ค. ์ผ๋ง๋ ๋๋น ์? ์, ์ ํํ CRC์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ข์ CRC๋ 3x-7x ๋ ๋์ ๋ฒ์์์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ง์ด ๋ค๋ฆด์ง ๋ชจ๋ฅด์ง๋ง ๊ทธ๊ฒ์ ๋จ์ง 2-3 ๋นํธ ๋ถ์ฐ ๊ฐ์์ด๋ฏ๋ก ๋์ฐํ์ง ์์ต๋๋ค. ์์ง๋.
"์ด์์ ์ธ"๋ถํฌ ์์ฑ์ ํน์ง์ผ๋กํ๋ ํด์์ ๋์กฐ๋ฉ๋๋ค. ๋จ์ผ ๋นํธ์ด๋ ์์ ํ ๋ค๋ฅธ ์ถ๋ ฅ์ด๋ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ถฉ๋์ ์์ฑ ํ ํ๋ฅ ์ด ์ ํํ 1 / 2 ^ n์ ๋๋ค. ์ดํดํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค. ์ถฉ๋ ์ํ์ ํญ์ ๋์ผํฉ๋๋ค. CRC์ ์ง์ ๋น๊ตํ๋ฉด ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋ ์ถฉ๋ ๋ฅ ์ ๋ ๋์์ง๋ง (> 0์ด๊ธฐ ๋๋ฌธ์) ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ํด ๋ ๋ ์ข์ต๋๋ค.
์์ฆ์๋ ์ํฉ์ด ๊ธ๊ฒฉํ ๋ณํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ๋งค์ฒด ์์ ์ค๋ฅ ๊ฐ์ง ๋ฐ ์์ ๋ ผ๋ฆฌ ๊ณ์ธต์ ๊ณ์ธต์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋์ ๋ธ๋ก์์ ์กฐ๊ธ๋ง ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๋ธ๋ฃจํฌ์ค ์ฑ๋์์ ์กฐ๊ธ๋ง ์ฝ์ ์๋ ์์ต๋๋ค. ๋ ์ด์ ๋ง์ด๋์ง ์์ต๋๋ค. ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋ ๋ณต์กํ๊ณ ํ๋ ฅ์ ์ด๋ฉฐ ๋ฌผ๋ฆฌ ๊ณ์ธต์ ์๊ตฌ์ ์ธ ๋ ธ์ด์ฆ๋ฅผ ์ง์์ ์ผ๋ก ๋ณด์ํ๋ ์ํ ์ ์ฅ ๋ธ๋ก ๋ก์ง์ ํฌํจํฉ๋๋ค. ์คํจํ๋ฉด ๋จ์ผ ํ๋ฆฝ์ด ์์ฑ๋์ง ์์ต๋๋ค. ์คํ๋ ค ์์ ํ ๋ฐ์ดํฐ ์์ญ์ด ์์ ํ ์์ฌ์ ๋ชจ๋ 0์ด๊ฑฐ๋ ์์์ ๋ ธ์ด์ฆ๊ฐ๋ฉ๋๋ค.
์ด ์๋ก์ด ํ๊ฒฝ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ ์ด์ "bitflip"๋ฒ์ฃผ์ ์ํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ CRC์ ๋ฐฐํฌ ์์ฑ์ ์ฑ ์์ด๋ฉ๋๋ค. ์์ํ ํด์๋ ์ค์ ๋ก ์ถฉ๋์ ์ผ์ผํฌ ํ๋ฅ ์ด ๋ฎ์ต๋๋ค.
์ด๊ฒ์ ์ฒดํฌ์ฌ ๋ง ๊ณ ๋ คํ ๋์
๋๋ค.
"์ด์์ ์ธ"ํด์์ ์ถ๊ฐ ์์ฑ์ ํด์์์ ๋นํธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ถ์ถ ํ ๋ ์ฌ์ ํ์ด 1 / 2^n
์ถฉ๋ ํ๋ฅ ์ ํน์ง์ผ๋กํ๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋นํธ ์์ค๋ก ๋งค์ฐ ์ค์ํฉ๋๋ค. ํด์ ํ
์ด๋ธ ๋๋ ๋ธ๋ฃธ ํํฐ. ๋ฐ๋๋ก CRC๋ ๊ทธ๋ฌํ ๋ณด์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.
์ฒดํฌ์ฌ๊ณผ ํด์ฑ์ ๋จ์ํ ๋ ๊ฐ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ฉฐ ํผ๋ํด์๋ ์๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฌ์ค, ๊ทธ๊ฒ์ด ์ด๋ก ์
๋๋ค. ๋ฌธ์ ๋ ์ด๊ฒ์ด ํธ๋ฆฌํจ๊ณผ ํ์ฅ ์ค์ต์ ๋ฌด์ํ๋ค๋ ๊ฒ์
๋๋ค. ์ฌ๋ฌ ๋ชฉ์ ์ ์ํด ํ๋์ "๋ฏน์"๋ฅผ ๊ฐ๋ ๊ฒ์ ํธ๋ฆฌํ๋ฉฐ ํ๋ก๊ทธ๋๋จธ๋ ํ๋์ ๋ง์กฑํ๊ณ ์์ด ๋ฒ๋ฆด ๊ฒ์
๋๋ค. ๋๋ crc32๊ฐ ํด์ฑ์ ์ฌ์ฉ ๋ ๊ฒ์ ๋ช ๋ฒ์ด๋ ๋ณด์๋์ง ์
์ ์๋ค. ๋จ์ง "์ถฉ๋ถํ ์์์ "์ด๋ผ๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ์ด๋์๋ ์๋๋ค๊ณ ๋งํ๊ธฐ๋ ์ฝ์ง๋ง ๊ณ์ํด์ ๋ฐ์ํฉ๋๋ค.
์ด ํ๊ฒฝ์์ ๋ ์ฌ์ฉ ์ฌ๋ก ๋ชจ๋์ ์ ์๋ํ๋๋ก ์ค๊ณ๋ ์๋ฃจ์
์ ์ ์ํ๋ ๊ฒ์ ์ฌ์ฉ์์ ๊ธฐ๋์ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
PIC / Arduino ๊ตฐ์ค ๋ด์์ ์ฌ๋๋ค์ ์ฌ์ ํ โโ์ค๋๋ ๊ฐ๋จํ 8 ๋นํธ ์ฒดํฌ์ฌ, 16 ๋นํธ Fletcher ํฉ๊ณ ๋๋ 16 ๋นํธ CRC๋ฅผ ์ฌ์ฉํฉ๋๋ค.
(...)
8 ๋นํธ ๋๋ 16 ๋นํธ๋ก ์ค์ผ ๋ ํด์ ํจ์์ ๋ณธ์ง์ ์ผ๋ก ๋์ ๊ฒ์ด ์์ต๋๊น?
์ข์ ํด์์ ์์ฑ์ผ๋ก ์ธํด ์ค์ ๋ก ํด์์์ 8 ๋นํธ ๋๋ 16 ๋นํธ๋ฅผ ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋ก 1/256 ๋๋ 1/65535 ์ถฉ๋ ํ๋ฅ ์ด ๋ฐ์ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๋๋ค.
๋จ์ง, ์ฐ๋ฆฌ๋ _history_์ ์ง์ฐ ์๊ฐ์ ๋ฐ์ ๋ค์ฌ์ผํฉ๋๋ค. ์ฌ๋๋ค์ ์ฒดํฌ์ฌ์ ์ํด ํน์ ์ฒดํฌ์ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํน์ ๋ฐฉ์์ ์ต์ํฉ๋๋ค. ๋ ์ต๊ทผ์ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ ์๋ฃจ์ ์ด ์๋๋ผ๋ ์ต๊ด์ ๋น ๋ฅด๊ฒ ๋ณํ์ง ์์ต๋๋ค.
CRC ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ผ๋ก ํด๋ฐ ๊ฑฐ๋ฆฌ ์กฐ๊ฑด์์ ์ค๋ฅ ๊ฐ์ง๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ ํ๋ ์์ ๋นํธ ํ๋ฆฝ์ด ์ฃผ์ด์ง๋ฉด CRC๋ _ ํ์ํ๊ฒ _ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๊ฒ์ ์ค๋ฅ๊ฐ ๋ช ๋นํธ ๋ง ๋ค์ง๋ ๊ฒ์ผ๋ก ์ถ์ ๋๋ ์ํฉ์์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
๋ถ๊ณผ ์์ญ ๋ ์ ๋งํด๋ ์ด๋ ๊ธฐ๋ณธ ์ ํธ๊ฐ ์ฌ์ ํ ๋งค์ฐ "์์"์๊ธฐ ๋๋ฌธ์ ํนํ ์ ์ก ์๋๋ฆฌ์ค์์ ์๋์ ์ผ๋ก ํํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ฌผ๋ฆฌ ๊ณ์ธต์์ ๊ฐ์ง๋์ง ์์ ๋นํธ ํ๋ฆฝ์ด ๋ฌธ์ ์์ต๋๋ค.๊ทธ๋ฌ๋์ด ์์ฑ์๋ ๋ฐฐํฌ ๋น์ฉ์ด ์์ต๋๋ค. "์์ ํ"ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋์ผ๋ฉด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋น ์ง๋๋ค. ์ด๊ฒ์ ๋น๋๊ธฐ ๊ตฌ๋ฉ ์์น์ ๋ ผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๋๋ค. ์ผ๋ง๋ ๋๋น ์? ์, ์ ํํ CRC์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ข์ CRC๋ 3x-7x ๋ ๋์ ๋ฒ์์์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ง์ด ๋ค๋ฆด์ง ๋ชจ๋ฅด์ง๋ง ๊ทธ๊ฒ์ ๋จ์ง 2-3 ๋นํธ ๋ถ์ฐ ๊ฐ์์ด๋ฏ๋ก ๋์ฐํ์ง ์์ต๋๋ค. ์์ง๋.
"์ด์์ ์ธ"๋ถํฌ ์์ฑ์ ํน์ง์ผ๋กํ๋ ํด์์ ๋์กฐ๋ฉ๋๋ค. ๋จ์ผ ๋นํธ์ด๋ ์์ ํ ๋ค๋ฅธ ์ถ๋ ฅ์ด๋ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ถฉ๋์ ์์ฑ ํ ํ๋ฅ ์ด ์ ํํ 1 / 2 ^ n์ ๋๋ค. ์ดํดํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค. ์ถฉ๋ ์ํ์ ํญ์ ๋์ผํฉ๋๋ค. CRC์ ์ง์ ๋น๊ตํ๋ฉด ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋๋ ์ถฉ๋ ๋ฅ ์ด ๋ ๋์์ง๋ง (> 0์ด๊ธฐ ๋๋ฌธ์) ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ํด ๋๋ ๋ ์ข์ต๋๋ค.
์์ฆ์๋ ์ํฉ์ด ๊ธ๊ฒฉํ ๋ณํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ๋งค์ฒด ์์ ์ค๋ฅ ๊ฐ์ง ๋ฐ ์์ ๋ ผ๋ฆฌ ๊ณ์ธต์ ๊ณ์ธต์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋์ ๋ธ๋ก์์ ์กฐ๊ธ๋ง ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๋ธ๋ฃจํฌ์ค ์ฑ๋์์ ์กฐ๊ธ๋ง ์ฝ์ ์๋ ์์ต๋๋ค. ๋ ์ด์ ๋ง์ด๋์ง ์์ต๋๋ค. ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋ ๋ณต์กํ๊ณ ํ๋ ฅ์ ์ด๋ฉฐ ๋ฌผ๋ฆฌ ๊ณ์ธต์ ์๊ตฌ์ ์ธ ๋ ธ์ด์ฆ๋ฅผ ์ง์์ ์ผ๋ก ๋ณด์ํ๋ ์ํ ์ ์ฅ ๋ธ๋ก ๋ก์ง์ ํฌํจํฉ๋๋ค. ์คํจํ๋ฉด ๋จ์ผ ํ๋ฆฝ์ด ์์ฑ๋์ง ์์ต๋๋ค. ์คํ๋ ค ์์ ํ ๋ฐ์ดํฐ ์์ญ์ด ์์ ํ ์์ฌ์ ๋ชจ๋ 0์ด๊ฑฐ๋ ์์์ ๋ ธ์ด์ฆ๊ฐ๋ฉ๋๋ค.
์ด ์๋ก์ด ํ๊ฒฝ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ ์ด์ "bitflip"๋ฒ์ฃผ์ ์ํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ CRC์ ๋ฐฐํฌ ์์ฑ์ ์ฑ ์์ด๋ฉ๋๋ค. ์์ํ ํด์๋ ์ค์ ๋ก ์ถฉ๋์ ์ผ์ผํฌ ํ๋ฅ ์ด ๋ฎ์ต๋๋ค.
์ด๊ฒ์ ์ฒดํฌ์ฌ ๋ง ๊ณ ๋ คํ ๋์ ๋๋ค.
"์ด์์ ์ธ"ํด์์ ์ถ๊ฐ ์์ฑ์ ํด์์์ ๋นํธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ถ์ถ ํ ๋ ์ฌ์ ํ์ด1 / 2^n
์ถฉ๋ ํ๋ฅ ์ ํน์ง์ผ๋กํ๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋นํธ ์์ค๋ก ๋งค์ฐ ์ค์ํฉ๋๋ค. ํด์ ํ ์ด๋ธ ๋๋ ๋ธ๋ฃธ ํํฐ. ๋ฐ๋๋ก CRC๋ ๊ทธ๋ฌํ ๋ณด์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.์ฒดํฌ์ฌ๊ณผ ํด์ฑ์ ๋จ์ํ ๋ ๊ฐ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ฉฐ ํผ๋ํด์๋ ์๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฌ์ค, ๊ทธ๊ฒ์ด ์ด๋ก ์ ๋๋ค. ๋ฌธ์ ๋ ์ด๊ฒ์ด ํธ๋ฆฌํจ๊ณผ ํ์ฅ ์ค์ต์ ๋ฌด์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๋ฌ ๋ชฉ์ ์ ์ํด ํ๋์ "๋ฏน์"๋ฅผ ๊ฐ๋ ๊ฒ์ ํธ๋ฆฌํ๋ฉฐ ํ๋ก๊ทธ๋๋จธ๋ ํ๋์ ๋ง์กฑํ๊ณ ์์ด ๋ฒ๋ฆด ๊ฒ์ ๋๋ค. ๋๋ crc32๊ฐ ํด์ฑ์ ์ฌ์ฉ ๋ ๊ฒ์ ๋ช ๋ฒ์ด๋ ๋ณด์๋์ง ์ ์ ์๋ค. ๋จ์ง "์ถฉ๋ถํ ์์์ "์ด๋ผ๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ์ด๋์๋ ์๋๋ค๊ณ ๋งํ๊ธฐ๋ ์ฝ์ง๋ง ๊ณ์ํด์ ๋ฐ์ํฉ๋๋ค.
์ด ํ๊ฒฝ์์ ๋ ์ฌ์ฉ ์ฌ๋ก ๋ชจ๋์ ์ ์๋ํ๋๋ก ์ค๊ณ๋ ์๋ฃจ์ ์ ์ ์ํ๋ ๊ฒ์ ์ฌ์ฉ์์ ๊ธฐ๋์ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.PIC / Arduino ๊ตฐ์ค ๋ด์์ ์ฌ๋๋ค์ ์ฌ์ ํ โโ์ค๋๋ ๊ฐ๋จํ 8 ๋นํธ ์ฒดํฌ์ฌ, 16 ๋นํธ Fletcher ํฉ๊ณ ๋๋ 16 ๋นํธ CRC๋ฅผ ์ฌ์ฉํฉ๋๋ค.
(...)
8 ๋นํธ ๋๋ 16 ๋นํธ๋ก ์ค์ผ ๋ ํด์ ํจ์์ ๋ณธ์ง์ ์ผ๋ก ๋์ ๊ฒ์ด ์์ต๋๊น?์ข์ ํด์์ ์์ฑ์ผ๋ก ์ธํด ์ค์ ๋ก ํด์์์ 8 ๋นํธ ๋๋ 16 ๋นํธ๋ฅผ ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋ก 1/256 ๋๋ 1/65535 ์ถฉ๋ ํ๋ฅ ์ด ๋ฐ์ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๋๋ค.
๋จ์ง, ์ฐ๋ฆฌ๋ _history_์ ์ง์ฐ ์๊ฐ์ ๋ฐ์ ๋ค์ฌ์ผํฉ๋๋ค. ์ฌ๋๋ค์ ์ฒดํฌ์ฌ์ ์ํด ํน์ ์ฒดํฌ์ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํน์ ๋ฐฉ์์ ์ต์ํฉ๋๋ค. ๋ ์ต๊ทผ์ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ ์๋ฃจ์ ์ด ์๋๋ผ๋ ์ต๊ด์ ๋น ๋ฅด๊ฒ ๋ณํ์ง ์์ต๋๋ค.
CRC 32์ HD = 6์ ์ฌ์ฉํ๋ฉด 5 ๋นํธ ์ค๋ฅ๋ฅผ โโ๊ฐ์ง ํ ์ ์์ผ๋ฉฐ ์ต๋ 2 ^ 31 = ์ฝ 204MB๊น์ง ๋ฒ์คํธ๋ฅผ ๊ฐ์ง ํ ์ ์์ต๋๋ค.
๋ชจ๋ ๋จ์ผ ๋นํธ ์ค๋ฅ ๊ฐ์ง
xxHash์์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ๋๋ก ๋ช ๋นํธ๋ฅผ ๋ณ๊ฒฝํด์ผํฉ๋๊น?
ํด์์์ 1 ๋นํธ ๋ณ๊ฒฝ์กฐ์ฐจ๋ ์์ ํ ๋ค๋ฅธ ๋ค์ด์ ์คํธ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ถฉ๋์ ๋ง๋๋ ๋ฐ ํ์ํ ๋นํธ ์๋ฅผ ์ด๋ป๊ฒ ๊ณ์ฐํ ์ ์์ต๋๊น?
๋ ๋ค๋ฅธ ์ง๋ฌธ์ ๋ง์ํ์ ๋๋ก์
๋๋ค.
๋ฐ๋๋ก CRC๋ ๊ทธ๋ฌํ ๋ณด์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.
์ ๋์๊ฐ์? ๋นํธ๊ฐ ์ด๋ป๊ฒ ๋ ์๊ด ๊ด๊ณ๊ฐ ์๋ค๋ฉด์ด ์๊ด ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ ํ์ผ์ ๋ณต๊ตฌ ํ ์ ์์ต๋๊น?
xxHash์์ ์ค๋ฅ (๋๋ ์ถฉ๋)๋ฅผ ๊ฐ์ง ํ ์ ์๋๋ก ๋ณ๊ฒฝํด์ผํ๋ ๋นํธ ์
1 ๋นํธ.
xxHash๋ ์ฒดํฌ์ฌ์ด ์๋ ๋น ์ํธํ ํด์ ํจ์์ ๋๋ค. ํด๋ฐ ๊ฑฐ๋ฆฌ ๋๋ ์ถฉ๋ ์ ํญ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
๊ด์ฐฎ์ ์ผ์ ํ ์๋ ์์ง๋ง ์ต์ ์ ์ ํ์ ์๋๋๋ค. ํ์น๋ฅผ ๋ ์น๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ์์ ์ ์๋ฃ ํ ์ ์์ง๋ง ์ค์ ๋ ์น๋ณด๋ค ํจ๊ณผ๊ฐ ๋จ์ด์ง๊ณ ์์์ ์ ํ ์ ์์ต๋๋ค.
xxHash์์ ์ค๋ฅ (๋๋ ์ถฉ๋)๋ฅผ ๊ฐ์ง ํ ์ ์๋๋ก ๋ณ๊ฒฝํด์ผํ๋ ๋นํธ ์
1 ๋นํธ.
xxHash๋ ์ฒดํฌ์ฌ์ด ์๋ ๋น ์ํธํ ํด์ ํจ์์ ๋๋ค. ํด๋ฐ ๊ฑฐ๋ฆฌ ๋๋ ์ถฉ๋ ์ ํญ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
๊ด์ฐฎ์ ์ผ์ ํ ์๋ ์์ง๋ง ์ต์ ์ ์ ํ์ ์๋๋๋ค. ํ์น๋ฅผ ๋ ์น๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ฌผ๋ก ์์ ์ ์๋ฃ ํ ์ ์์ง๋ง ์ค์ ๋ ์น๋ณด๋ค ํจ๊ณผ๊ฐ ๋จ์ด์ง๊ณ ์์์ ์ ํ ์ ์์ต๋๋ค.
1 ๋นํธ์ ๋ฐ์ดํฐ ๋ง ๋ณ๊ฒฝํด๋ ๋์ฝ๋๋ฅผ ์์ผ ์ ์๋ค๋ ๋ป์
๋๊น?
์ถฉ๋์ ์ผ์ผํฌ ์ ์์ต๋๊น? (๋ฌด์ญ์ต๋๋ค) ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฌํ ์ถฉ๋์ ๊ฐ๋ฅ์ฑ์ ๋ค์ด์ ์คํธ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค
1 ๋นํธ์ ๋ฐ์ดํฐ ๋ง ๋ณ๊ฒฝํด๋ ๋์ฝ๋๋ฅผ ์์ผ ์ ์๋ค๋ ๋ป์ ๋๊น?
2 ๊ฐ์ ๋ค๋ฅธ ์ฝํ
์ธ ์์ ์์ฑ ๋ ํด์ ๊ฐ์ ๊ณ ๋ คํ ๋ ์ถฉ๋ ํ๋ฅ ์ ํญ์ 1 / 2^64
( xxh64
๋๋ xxh3
์ ๊ฐ์ ์์ง์ 64 ๋นํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ). ์ด ๋ ์ฝํ
์ธ ์ฌ์ด์ ์ ์ ๋.
์ค์ ๋ก ์ ์ด๋ ์ด๋ก ์ ์ผ๋ก๋ ๋จ์ผ ๋นํธ์ ๋ณ๊ฒฝ์ด ์ถฉ๋์ ์์ฑ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์ด์ ์ด ํ๋ฅ ์ 1 / 2^64
์ด๋ฉฐ, ์ด๋ ๊ฑฐ์ ๊ทน์์์
๋๋ค.
์ฌ๋๋ค์์ด ์ฃผ์ ๋ฅผ ๋น๊ต์ ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ค์ ๋๋๋ก ๊ทธ๊ฒ์ "์์"๊ณผ ํผ๋ํ๋๋ฐ, ์ด๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๋ง์์์ ~ 10 %์ฒ๋ผ ์ค์ง์ ์ธ ์์ผ๋ก ์ธ์๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋ณด๋ค ์ ํํ ์์ด๋์ด๋ฅผ ์ป๊ธฐ ์ํด ๋ค์ ํ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
ie : 1 / 2 ^ 64
์ ๋จธ๋ฆฌ์ ์ง์ ํ์ฑ์๋ฐ์ ํ๋ฅ ๋ณด๋ค ํจ์ฌ ๋ฎ๊ณ , ์ ๊ตญ ๋ณต๊ถ _3 ๋ฒ ์ฐ์ ๋น์ฒจ๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ฎ์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก "null"์ ํจ์ฌ ๋ ๊ฐ๊น์ต๋๋ค. ๋ชจ๋ ์์คํ
์ ๋๋ถ๋ถ์ ๊ตฌ์ฑ ์์๋ ๋ค๋ฅธ ์ํํธ์จ์ด ๋ฒ๊ทธ ์์ค๋ถํฐ ์์ํ์ฌ ๊ทธ๋ณด๋ค ํจ์ฌ ๋ ๋์ ํ๋ฅ ๋ก ์ค๋จ๋๊ธฐ ์ฝ์ต๋๋ค.
๊ทธ๋ฌํ ์ด๋ก ์ ์ธ 1 ๋นํธ ์ถฉ๋์ ์ฐพ๊ณ ์ํ๋ค๋ฉด์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ฌด์ฐจ๋ณ ๋์ ํ๊ธฐ ์ํด์๋ ์๋นํ ๊ฑฐ๋ํ ์ ๋ ฅ๊ณผ ๋ฏฟ์ ์ ์์ ์ ๋์ ํ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์๋ฃจ์ ์ด ์กด์ฌํ์ง ์์ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ ์ฐ์ ์ ํน์ฑ์ ๊ณ ๋ คํ ๋ ๋จ์ผ ๋นํธ ์์ ์ผ๋ก ์ถฉ๋์ ์์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋๋ผ๋ ๋๋ผ์ง ์์ ๊ฒ์ ๋๋ค. ๋ด ์๊ฐ์ ์ ์ด๋ 2 ๋นํธ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ด ๊ฒฝ์ฐ์๋ ์ํ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑ ํ ์์๋ ๊ธฐํ๋ฅผ ์ป๊ธฐ ์ํด ํน์ ์ ๋ ฅ ์์น์ ๋ฐฐ์นํด์ผํ๋ฏ๋ก ์ด๋ฌํ ์์ ์ด ๋ ์ด์ "๋ฌด์์"๊ฐ ์๋๋ฏ๋ก ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ๋น ์ํธํ ํด์.
ํ์ง๋ง ์ธ์ฉ ๋ ํ
์คํธ๊ฐ ์ด๋ฏธ์ด ๋ชจ๋ ๊ฒ์ ์ค๋ช
ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ค์ crc
๋ ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉ ํ ์ ์์ผ๋ฉฐ, ๊ณผ๊ฑฐ์๋ ์ ํธ๊ฐ ๋นํธ ๋ ๋ฒจ์์ ์์ ๋๊ธฐ ์ฌ์ ์ ๋์ ์ฒดํฌ์ฌ ์์ฒด๊ฐ ๋ค์ ์์ ๋ (16 ๋นํธ ๋๋ 32 ๋นํธ) ํจ์ฌ ๋ ์๋ฏธ๊ฐ์์์ต๋๋ค. 16 ๋นํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ์ ์ ๋นํธ ํ๋ฆฝ๊ณผ ๊ด๋ จ๋ ์ถฉ๋์ ๋์น ์์๋ ๋ฌด์ํ ์์๋ ๊ธฐํ๋ฅผ ๊ฐ์ง๋ฏ๋ก ์์
์ ๋ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ 64 ๋นํธ ๋๋ 128 ๋นํธ ํด์๊ฐ ํ
์ด๋ธ์ ์์ผ๋ฏ๋ก ์ถฉ๋ ๊ฐ๋ฅ์ฑ, ๋ฐ๋ผ์ ๊ฐ์ง๋์ง ์์ ์์์ ๊ฐ๋ฅ์ฑ์ด ํค์๋ฆด ์ ์์ ์ ๋๋ก ์ ๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์ํํ ์ต์
์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.
์ ๋์๊ฐ์?
ํด์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฒดํฌ์ฌ ๊ต์ฒด๋ณด๋ค ๋ ๋ง์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ค์ ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋ชฉ์ ์ ํด์ ํ
์ด๋ธ์์ ์์น๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์์์ ๋นํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ๋นํธ ์ค ์ผ๋ถ๊ฐ ๋ด์ฉ์ ๋ฐ๋ผ ์์ธก ๊ฐ๋ฅ ํด์ง๋ฉด ํด์ ํ
์ด๋ธ์ ์์น ๋ถํฌ๊ฐ ๋ ์ด์ "๋ฌด์์"๊ฐ๋์ง ์๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ผ๋ถ ์
์ด ๋ค๋ฅธ ์
๋ณด๋ค ๋ ๋นจ๋ฆฌ ์ค๋ฒํ๋ก๋์ด ํด์ ํ
์ด๋ธ์ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. .
๋นํธ๊ฐ ์ด๋ป๊ฒ ๋ ์๊ด ๊ด๊ณ๊ฐ ์๋ค๋ฉด์ด ์๊ด ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ ํ์ผ์ ๋ณต๊ตฌ ํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์์ ํ ๋ค๋ฅธ ์ฃผ์ ์
๋๋ค.
ํ๋๋ CRC๋ก ์์๋ ์
๋ ฅ์ ๋ณต๊ตฌํ์ง ์์ต๋๋ค. CRC๋ ์ค๋ฅ๋ฅผ ๊ฐ์ง ํ ์๋ง ์๊ณ ๋ณต๊ตฌ ํ ์๋ ์์ต๋๋ค.
์๊ฐ ๋ณต๊ตฌ ๋ฐ์ดํฐ๋ ์ฃผ์ ์ด๋ฉฐ ์ปจ๋ณผ ๋ฃจ์ ์ฝ๋์ ๊ฐ์ ๋ค๋ฅธ (๊ทธ๋ฆฌ๊ณ ํจ์ฌ ๋ ๊ณ์ฐ์ ์ผ๋ก ๊ด๋ จ๋) ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค.
๊ทธ๋ฌํ ์ด๋ก ์ ์ธ 1 ๋นํธ ์ถฉ๋์ ์ฐพ๊ณ ์ํ๋ค๋ฉด์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ฌด์ฐจ๋ณ ๋์ ํ๊ธฐ ์ํด์๋ ์๋นํ ๊ฑฐ๋ํ ์ ๋ ฅ๊ณผ ๋ฏฟ์ ์ ์์ ์ ๋์ ํ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์๋ฃจ์ ์ด ์กด์ฌํ์ง ์์ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ ์ฐ์ ์ ํน์ฑ์ ๊ณ ๋ คํ ๋ ๋จ์ผ ๋นํธ ์์ ์ผ๋ก ์ถฉ๋์ ์์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋๋ผ๋ ๋๋ผ์ง ์์ ๊ฒ์ ๋๋ค. ๋ด ์๊ฐ์ ์ ์ด๋ 2 ๋นํธ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ด ๊ฒฝ์ฐ์๋ ์ํ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑ ํ ์์๋ ๊ธฐํ๋ฅผ ์ป๊ธฐ ์ํด ํน์ ์ ๋ ฅ ์์น์ ๋ฐฐ์นํด์ผํ๋ฏ๋ก ์ด๋ฌํ ์์ ์ด ๋ ์ด์ "๋ฌด์์"๊ฐ ์๋๋ฏ๋ก ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ๋น ์ํธํ ํด์.
๊ณผ์ฐ; ์ข ๋ ์๋ฒฝํ๊ฒ ๋งํ๋ฉด, ๋ด ์ด์ ์ง์ ์ 240 ๋ฐ์ดํธ ์ด์์ ์ ๋ ฅ์ ๋ํด ํฐ ํฌ๊ธฐ ์น์ ์ ๋ํ ๊ฒ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์, ์
๋ ฅ์ด 64 ๋นํธ secret
์ค ํ๋์ ์ ํํ ์ผ์นํด์ผํ๋ ์ ํ๋ ๋ฒ์์ ํฌ๊ธฐ์์๋ ๋จ์ผ ๋นํธ ์ถฉ๋์ด ๊ฐ๋ฅํฉ๋๋ค. ์ ํํ ์์น์์ ์ ํํ 64 ๋นํธ ์
๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ถฉ๋์ด ์ฌ์ ํ์ด 1 / 2^64
์์ญ ๋ด์ ์๊ธฐ ๋๋ฌธ์ ์์ฉ ๊ฐ๋ฅํ๋ค๊ณ ๋๊ผ์ต๋๋ค. ์
๋ ฅ์ด ์์์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค (์ฆ, ์ถฉ๋์ ์์ฑํ๋๋ก ์ค๊ณ๋์ง ์์). ๋ํ ์ผ์น์ํฌ secret
๋ ํจ๊ณผ์ ์ผ๋ก _secret_ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์ธ๋ถ ๊ณต๊ฒฉ์๊ฐ์ด๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๋ฌด์ฐจ๋ณ ๋์
ํด์ผํฉ๋๋ค.
1 ๋นํธ์ ๋ฐ์ดํฐ ๋ง ๋ณ๊ฒฝํด๋ ๋์ฝ๋๋ฅผ ์์ผ ์ ์๋ค๋ ๋ป์ ๋๊น?
2 ๊ฐ์ ๋ค๋ฅธ ์ฝํ ์ธ ์์ ์์ฑ ๋ ํด์ ๊ฐ์ ๊ณ ๋ คํ ๋ ์ถฉ๋ ํ๋ฅ ์ ํญ์
1 / 2^64
(xxh64
๋๋xxh3
์ ๊ฐ์ ์์ง์ 64 ๋นํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ). ์ด ๋ ์ฝํ ์ธ ์ฌ์ด์ ์ ์ ๋.์ค์ ๋ก ์ ์ด๋ ์ด๋ก ์ ์ผ๋ก๋ ๋จ์ผ ๋นํธ์ ๋ณ๊ฒฝ์ด ์ถฉ๋์ ์์ฑ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์ด์ ์ด ํ๋ฅ ์
1 / 2^64
์ด๋ฉฐ, ์ด๋ ๊ฑฐ์ ๊ทน์์์ ๋๋ค.
์ฌ๋๋ค์์ด ์ฃผ์ ๋ฅผ ๋น๊ต์ ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ค์ ๋๋๋ก ๊ทธ๊ฒ์ "์์"๊ณผ ํผ๋ํ๋๋ฐ, ์ด๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๋ง์์์ ~ 10 %์ฒ๋ผ ์ค์ง์ ์ธ ์์ผ๋ก ์ธ์๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.๋ณด๋ค ์ ํํ ์์ด๋์ด๋ฅผ ์ป๊ธฐ ์ํด ๋ค์ ํ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
ie :
1 / 2 ^ 64
์ ๋จธ๋ฆฌ์ ์ง์ ํ์ฑ์๋ฐ์ ํ๋ฅ ๋ณด๋ค ํจ์ฌ ๋ฎ๊ณ , ์ ๊ตญ ๋ณต๊ถ _3 ๋ฒ ์ฐ์ ๋น์ฒจ๋๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ฎ์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก "null"์ ํจ์ฌ ๋ ๊ฐ๊น์ต๋๋ค. ๋ชจ๋ ์์คํ ์ ๋๋ถ๋ถ์ ๊ตฌ์ฑ ์์๋ ๋ค๋ฅธ ์ํํธ์จ์ด ๋ฒ๊ทธ ์์ค๋ถํฐ ์์ํ์ฌ ๊ทธ๋ณด๋ค ํจ์ฌ ๋ ๋์ ํ๋ฅ ๋ก ์ค๋จ๋๊ธฐ ์ฝ์ต๋๋ค.๊ทธ๋ฌํ ์ด๋ก ์ ์ธ 1 ๋นํธ ์ถฉ๋์ ์ฐพ๊ณ ์ํ๋ค๋ฉด์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ๋ฌด์ฐจ๋ณ ๋์ ํ๊ธฐ ์ํด์๋ ์๋นํ ๊ฑฐ๋ํ ์ ๋ ฅ๊ณผ ๋ฏฟ์ ์ ์์ ์ ๋์ ํ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์๋ฃจ์ ์ด ์กด์ฌํ์ง ์์ ์ ์์ต๋๋ค. ์ฌ์ฉ ๋ ์ฐ์ ์ ํน์ฑ์ ๊ณ ๋ คํ ๋ ๋จ์ผ ๋นํธ ์์ ์ผ๋ก ์ถฉ๋์ ์์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋๋ผ๋ ๋๋ผ์ง ์์ ๊ฒ์ ๋๋ค. ๋ด ์๊ฐ์ ์ ์ด๋ 2 ๋นํธ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ด ๊ฒฝ์ฐ์๋ ์ํ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑ ํ ์์๋ ๊ธฐํ๋ฅผ ์ป๊ธฐ ์ํด ํน์ ์ ๋ ฅ ์์น์ ๋ฐฐ์นํด์ผํ๋ฏ๋ก ์ด๋ฌํ ์์ ์ด ๋ ์ด์ "๋ฌด์์"๊ฐ ์๋๋ฏ๋ก ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ๋น ์ํธํ ํด์.
ํ์ง๋ง ์ธ์ฉ ๋ ํ ์คํธ๊ฐ ์ด๋ฏธ์ด ๋ชจ๋ ๊ฒ์ ์ค๋ช ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ค์
crc
๋ ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฉ ํ ์ ์์ผ๋ฉฐ, ๊ณผ๊ฑฐ์๋ ์ ํธ๊ฐ ๋นํธ ๋ ๋ฒจ์์ ์์ ๋๊ธฐ ์ฌ์ ์ ๋์ ์ฒดํฌ์ฌ ์์ฒด๊ฐ ๋ค์ ์์ ๋ (16 ๋นํธ ๋๋ 32 ๋นํธ) ํจ์ฌ ๋ ์๋ฏธ๊ฐ์์์ต๋๋ค. 16 ๋นํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋งค์ฐ ์ ์ ๋นํธ ํ๋ฆฝ๊ณผ ๊ด๋ จ๋ ์ถฉ๋์ ๋์น ์์๋ ๋ฌด์ํ ์์๋ ๊ธฐํ๋ฅผ ๊ฐ์ง๋ฏ๋ก ์์ ์ ๋ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ 64 ๋นํธ ๋๋ 128 ๋นํธ ํด์๊ฐ ํ ์ด๋ธ์ ์์ผ๋ฏ๋ก ์ถฉ๋ ๊ฐ๋ฅ์ฑ, ๋ฐ๋ผ์ ๊ฐ์ง๋์ง ์์ ์์์ ๊ฐ๋ฅ์ฑ์ด ํค์๋ฆด ์ ์์ ์ ๋๋ก ์ ๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์ํํ ์ต์ ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.
์ ๋์๊ฐ์?
ํด์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฒดํฌ์ฌ ๊ต์ฒด๋ณด๋ค ๋ ๋ง์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ค์ ๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋ชฉ์ ์ ํด์ ํ ์ด๋ธ์์ ์์น๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์์์ ๋นํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋นํธ ์ค ์ผ๋ถ๊ฐ ๋ด์ฉ์ ๋ฐ๋ผ ์์ธก ๊ฐ๋ฅ ํด์ง๋ฉด ํด์ ํ ์ด๋ธ์ ์์น ๋ถํฌ๊ฐ ๋ ์ด์ "๋ฌด์์"๊ฐ๋์ง ์๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ผ๋ถ ์ ์ด ๋ค๋ฅธ ์ ๋ณด๋ค ๋ ๋นจ๋ฆฌ ์ค๋ฒํ๋ก๋์ด ํด์ ํ ์ด๋ธ์ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. .๋นํธ๊ฐ ์ด๋ป๊ฒ ๋ ์๊ด ๊ด๊ณ๊ฐ ์๋ค๋ฉด์ด ์๊ด ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ ํ์ผ์ ๋ณต๊ตฌ ํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์์ ํ ๋ค๋ฅธ ์ฃผ์ ์ ๋๋ค.
ํ๋๋ CRC๋ก ์์๋ ์ ๋ ฅ์ ๋ณต๊ตฌํ์ง ์์ต๋๋ค. CRC๋ ์ค๋ฅ๋ฅผ ๊ฐ์ง ํ ์๋ง ์๊ณ ๋ณต๊ตฌ ํ ์๋ ์์ต๋๋ค.์๊ฐ ๋ณต๊ตฌ ๋ฐ์ดํฐ๋ ์ฃผ์ ์ด๋ฉฐ ์ปจ๋ณผ ๋ฃจ์ ์ฝ๋์ ๊ฐ์ ๋ค๋ฅธ (๊ทธ๋ฆฌ๊ณ ํจ์ฌ ๋ ๊ณ์ฐ์ ์ผ๋ก ๊ด๋ จ๋) ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค๋ฅผ ํ์ธํ ์ ์์ต๋๊น?
์ค๋ช ๋ ์๋๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
LZ4 ํ๋ ์ ํ์์ 32 ๋นํธ ํด์ ์ธ XXH32
๋๋ฐ ์ฒดํฌ์ฌ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฒด ํ๋ ์์ ์ฝํ
์ธ ,๋ณด๋ค ์ ํํ๊ฒ๋ ํ๋ ์์ _uncompressed_ ์ฝํ
์ธ (์์ถ ํด์ ํ)์ ์ ์ฉ๋์ด ์ ์ก ๋ฐ ๋์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ๊ฒ์ฆํฉ๋๋ค.
๋ํ ์ ํ์ ์ผ๋ก ๊ฐ ๋ธ๋ก์ ์ ์ฉ ํ ์ ์์ผ๋ฉฐ,์ด ๊ฒฝ์ฐ ๊ฐ ๋ธ๋ก์ _compressed_ ๋ด์ฉ์ ์ฒดํฌ์ฌํฉ๋๋ค.
๋ ๋ค ๋์ ๋ ์ ์์ต๋๋ค.
๊ฐ์ง๋์ง ์์ ์ํ๋ก ์ ์งํ๋ ค๋ฉด ์์์ด ___all___ ํด๋นํ๋ ์ฒดํฌ์ฌ์ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํด์ผํฉ๋๋ค.
๋ธ๋ก ์ฒดํฌ์ฌ์ด ํ์ฑํ๋์ด ์๊ณ ์์์ด ์์ ํ ๋จ์ผ ๋ธ๋ก ๋ด์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋ธ๋ก๊ณผ ํ๋ ์ ์ฒดํฌ์ฌ์ ๋ชจ๋ ํต๊ณผ ํ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋ก 1 / 2^32 x 1 / 2^32 = 1 / 2^64
์
๋๋ค.
์ด์ ์ฌ๋ฌ ์์ ์ด๋ฒคํธ๊ฐ ์๊ฑฐ๋ ํ๋์ ํฐ ์์๋ ์น์
์ด ์ฐ์ ๋ธ๋ก์ ํฌํจํ๊ธฐ ๋๋ฌธ์ ์์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๋ธ๋ก์ ์์ฃผํ๋ ๊ฒฝ์ฐ _ ์์์ด ๊ฐ์ง๋์ง ์์ ์ํ๋ก ์ ์ง๋๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค _. ๊ด๋ จ๋ ๊ฐ ๋ธ๋ก ์ฒดํฌ์ฌ๊ณผ ์ถฉ๋์ ์์ฑํด์ผํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์์์ด 2 ๊ฐ์ ๋ธ๋ก์ผ๋ก ํ์ฐ๋์๋ค๊ณ ๊ฐ์ ํ๋ฉด์ด ์์์ด ํ์ง๋์ง ์์ ์ฑ๋ก ๋จ์์์ ๊ฐ๋ฅ์ฑ์ 1 / 2^32 x 1 / 2^32 x 1 / 2^32 = 1 / 2^96
์
๋๋ค. ์ฒ๋ฌธํ์ ์ผ๋ก ์์ต๋๋ค.
๊ฐ ์์๋ ๋ธ๋ก์ด ์์ถ ํด์ ํ๋ก์ธ์ค์ ์ํด ํด๋ ๋ถ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ง ๋ ์ ์๋ค๋ ์ฌ์ค์ ๊ณ์ฐํ์ง ์์ต๋๋ค.
์, ๋ธ๋ก๊ณผ ํ๋ ์ ์ฒดํฌ์ฌ์ ๊ฒฐํฉํ๋ฉด ์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ง ํ ๊ฐ๋ฅ์ฑ์ด ํฌ๊ฒ ๋์์ง๋๋ค.
์ค๋ช ๋ ์๋๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
* LZ4-compressed data being corrupted (which is already a pretty rare event by itself) * Corruption remaining undetected due to hash collision.
LZ4 ํ๋ ์ ํ์์ 32 ๋นํธ ํด์ ์ธ
XXH32
๋๋ฐ ์ฒดํฌ์ฌ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฒด ํ๋ ์์ ์ฝํ ์ธ ,๋ณด๋ค ์ ํํ๊ฒ๋ ํ๋ ์์ _uncompressed_ ์ฝํ ์ธ (์์ถ ํด์ ํ)์ ์ ์ฉ๋์ด ์ ์ก ๋ฐ ๋์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ๊ฒ์ฆํฉ๋๋ค.
๋ํ ์ ํ์ ์ผ๋ก ๊ฐ ๋ธ๋ก์ ์ ์ฉ ํ ์ ์์ผ๋ฉฐ,์ด ๊ฒฝ์ฐ ๊ฐ ๋ธ๋ก์ _compressed_ ๋ด์ฉ์ ์ฒดํฌ์ฌํฉ๋๋ค.
๋ ๋ค ๋์ ๋ ์ ์์ต๋๋ค.๊ฐ์ง๋์ง ์์ ์ํ๋ก ์ ์งํ๋ ค๋ฉด ์์์ด _ ๋ชจ๋ _ ์ ์ฉ ๊ฐ๋ฅํ ์ฒดํฌ์ฌ์ ์ฑ๊ณต์ ์ผ๋ก ํต๊ณผํด์ผํฉ๋๋ค.
๋ธ๋ก ์ฒดํฌ์ฌ์ด ํ์ฑํ๋์ด ์๊ณ ์์์ด ์์ ํ ๋จ์ผ ๋ธ๋ก ๋ด์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋ธ๋ก๊ณผ ํ๋ ์ ์ฒดํฌ์ฌ์ ๋ชจ๋ ํต๊ณผ ํ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋ก1 / 2^32 x 1 / 2^32 = 1 / 2^64
์ ๋๋ค.์ด์ ์ฌ๋ฌ ์์ ์ด๋ฒคํธ๊ฐ ์๊ฑฐ๋ ํ๋์ ํฐ ์์๋ ์น์ ์ด ์ฐ์ ๋ธ๋ก์ ํฌํจํ๊ธฐ ๋๋ฌธ์ ์์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๋ธ๋ก์ ์์ฃผํ๋ ๊ฒฝ์ฐ _ ์์์ด ๊ฐ์ง๋์ง ์์ ์ํ๋ก ์ ์ง๋๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค _. ๊ด๋ จ๋ ๊ฐ ๋ธ๋ก ์ฒดํฌ์ฌ๊ณผ ์ถฉ๋์ ์์ฑํด์ผํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์์์ด 2 ๊ฐ์ ๋ธ๋ก์ ํผ์ ธ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด์ด ์์์ด ํ์ง๋์ง ์์ ์ฑ๋ก ๋จ์์์ ๊ฐ๋ฅ์ฑ์1 / 2^32 x 1 / 2^32 x 1 / 2^32 = 1 / 2^96
์ ๋๋ค. ์ฒ๋ฌธํ์ ์ผ๋ก ์์ต๋๋ค.๊ฐ ์์๋ ๋ธ๋ก์ด ์์ถ ํด์ ํ๋ก์ธ์ค์ ์ํด ํด๋ ๋ถ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ง ๋ ์ ์๋ค๋ ์ฌ์ค์ ๊ณ์ฐํ์ง ์์ต๋๋ค.
์, ๋ธ๋ก๊ณผ ํ๋ ์ ์ฒดํฌ์ฌ์ ๊ฒฐํฉํ๋ฉด ์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ง ํ ๊ฐ๋ฅ์ฑ์ด ํฌ๊ฒ ๋์์ง๋๋ค.
LZ4๋ฅผ ์ฆ์์์ ์ฌ์ฉํ ์ ์์ต๋๊น? ๋ด ๋ง์, ๋ฐ์ดํฐ๋ฅผ ํ๋ณดํ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์ถ / ์์ถ ํด์ ํ๋ ๊ฒ์
๋๋ค. ์ด๋ป๊ฒ ๋ ํ์ดํ ๋ผ์ด๋์
๋๋ค.
xxHash๋ ์ด๋ป์ต๋๊น?
LZ4๋ฅผ ์ฆ์์์ ์ฌ์ฉํ ์ ์์ต๋๊น? ๋ด ๋ง์, ๋ฐ์ดํฐ๋ฅผ ํ๋ณดํ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์ถ / ์์ถ ํด์ ํ๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ์คํธ๋ฆฌ๋ฐ ๋ชจ๋์ ๋๋ค. ๋ค ๊ฐ๋ฅํฉ๋๋ค.
xxHash๋ ์ด๋ป์ต๋๊น?
ํ๋ ์ ์ฒดํฌ์ฌ์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ง๋ง ํ๋ ์ ๋์์๋ง ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐ๋ผ์ ํ๋ ์ ์ด๋ฒคํธ๊ฐ ๋๋ ๋๊น์ง ๋น๊ตํ ์ฒดํฌ์ฌ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค (์คํธ๋ฆผ์ ์ฌ๋ฌ ๊ฐ์ ์ถ๊ฐ ๋ ํ๋ ์์ผ๋ก ๊ตฌ์ฑ ๋ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค).
๋์กฐ์ ์ผ๋ก ๋ธ๋ก ์ฒดํฌ์ฌ์ ๊ฐ ๋ธ๋ก์์ ์์ฑ๋๋ฏ๋ก ์คํธ๋ฆฌ๋ฐ ์ค์ ์ ๊ธฐ์ ์ผ๋ก ์์ฑ๋๊ณ ํ์ธ๋ฉ๋๋ค.
๋ ์ฒดํฌ์ฌ ๋ชจ๋ XXH32
ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
CRC ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ผ๋ก ํด๋ฐ ๊ฑฐ๋ฆฌ ์กฐ๊ฑด์์ ์ค๋ฅ ๊ฐ์ง๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ ํ๋ ์์ ๋นํธ ํ๋ฆฝ์ด ์ฃผ์ด์ง๋ฉด CRC๋ _ ํ์ํ๊ฒ _ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
์ด๊ฒ์ ์ค๋ฅ๊ฐ ๋ช ๋นํธ ๋ง ๋ค์ง๋ ๊ฒ์ผ๋ก ์ถ์ ๋๋ ์ํฉ์์ ์ ์ฉ ํ ์ ์์ต๋๋ค.
๋ถ๊ณผ ์์ญ ๋ ์ ๋งํด๋ ์ด๋ ๊ธฐ๋ณธ ์ ํธ๊ฐ ์ฌ์ ํ ๋งค์ฐ "์์"์๊ธฐ ๋๋ฌธ์ ํนํ ์ ์ก ์๋๋ฆฌ์ค์์ ์๋์ ์ผ๋ก ํํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ฌผ๋ฆฌ ๊ณ์ธต์์ ๊ฐ์ง๋์ง ์์ ๋นํธ ํ๋ฆฝ์ด ๋ฌธ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋์ด ์์ฑ์๋ ๋ฐฐํฌ ๋น์ฉ์ด ์์ต๋๋ค. "์์ ํ"ํด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋์ผ๋ฉด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋น ์ง๋๋ค. ์ด๊ฒ์ ๋น๋๊ธฐ ๊ตฌ๋ฉ ์์น์ ๋ ผ๋ฆฌ์ ๊ฒฐ๊ณผ์ ๋๋ค. ์ผ๋ง๋ ๋๋น ์? ์, ์ ํํ CRC์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ข์ CRC๋ 3x-7x ๋ ๋์ ๋ฒ์์์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ง์ด ๋ค๋ฆด์ง ๋ชจ๋ฅด์ง๋ง ๊ทธ๊ฒ์ ๋จ์ง 2-3 ๋นํธ ๋ถ์ฐ ๊ฐ์์ด๋ฏ๋ก ๋์ฐํ์ง ์์ต๋๋ค. ์์ง๋.
"์ด์์ ์ธ"๋ถํฌ ์์ฑ์ ํน์ง์ผ๋กํ๋ ํด์์ ๋์กฐ๋ฉ๋๋ค. ๋จ์ผ ๋นํธ์ด๋ ์์ ํ ๋ค๋ฅธ ์ถ๋ ฅ์ด๋ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ถฉ๋์ ์์ฑ ํ ํ๋ฅ ์ด ์ ํํ 1 / 2 ^ n์ ๋๋ค. ์ดํดํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค. ์ถฉ๋ ์ํ์ ํญ์ ๋์ผํฉ๋๋ค. CRC์ ์ง์ ๋น๊ตํ๋ฉด ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ์์ ๋ ์ถฉ๋ ๋ฅ ์ ๋ ๋์์ง๋ง (> 0์ด๊ธฐ ๋๋ฌธ์) ํด๋ฐ ๊ฑฐ๋ฆฌ๊ฐ ํด ๋ ๋ ์ข์ต๋๋ค.
์์ฆ์๋ ์ํฉ์ด ๊ธ๊ฒฉํ ๋ณํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ๋งค์ฒด ์์ ์ค๋ฅ ๊ฐ์ง ๋ฐ ์์ ๋ ผ๋ฆฌ ๊ณ์ธต์ ๊ณ์ธต์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋์ ๋ธ๋ก์์ ์กฐ๊ธ๋ง ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๋ธ๋ฃจํฌ์ค ์ฑ๋์์ ์กฐ๊ธ๋ง ์ฝ์ ์๋ ์์ต๋๋ค. ๋ ์ด์ ๋ง์ด๋์ง ์์ต๋๋ค. ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋ ๋ณต์กํ๊ณ ํ๋ ฅ์ ์ด๋ฉฐ ๋ฌผ๋ฆฌ ๊ณ์ธต์ ์๊ตฌ์ ์ธ ๋ ธ์ด์ฆ๋ฅผ ์ง์์ ์ผ๋ก ๋ณด์ํ๋ ์ํ ์ ์ฅ ๋ธ๋ก ๋ก์ง์ ํฌํจํฉ๋๋ค. ์คํจํ๋ฉด ๋จ์ผ ํ๋ฆฝ์ด ์์ฑ๋์ง ์์ต๋๋ค. ์คํ๋ ค ์์ ํ ๋ฐ์ดํฐ ์์ญ์ด ์์ ํ ์์ฌ์ ๋ชจ๋ 0์ด๊ฑฐ๋ ์์์ ๋ ธ์ด์ฆ๊ฐ๋ฉ๋๋ค.
์ด ์๋ก์ด ํ๊ฒฝ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ ์ด์ "bitflip"๋ฒ์ฃผ์ ์ํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ CRC์ ๋ฐฐํฌ ์์ฑ์ ์ฑ ์์ด๋ฉ๋๋ค. ์์ํ ํด์๋ ์ค์ ๋ก ์ถฉ๋์ ์ผ์ผํฌ ํ๋ฅ ์ด ๋ฎ์ต๋๋ค.
์ด๊ฒ์ ์ฒดํฌ์ฌ ๋ง ๊ณ ๋ คํ ๋์ ๋๋ค.
"์ด์์ ์ธ"ํด์์ ์ถ๊ฐ ์์ฑ์ ํด์์์ ๋นํธ ์ธ๊ทธ๋จผํธ๋ฅผ ์ถ์ถ ํ ๋ ์ฌ์ ํ์ด
1 / 2^n
์ถฉ๋ ํ๋ฅ ์ ํน์ง์ผ๋กํ๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ตฌ์กฐ์ ๋นํธ ์์ค๋ก ๋งค์ฐ ์ค์ํฉ๋๋ค. ํด์ ํ ์ด๋ธ ๋๋ ๋ธ๋ฃธ ํํฐ. ๋ฐ๋๋ก CRC๋ ๊ทธ๋ฌํ ๋ณด์ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ผ๋ถ ๋นํธ๋ ๋งค์ฐ ์์ธก ๊ฐ๋ฅํ๊ฑฐ๋ ์๊ด ๊ด๊ณ๊ฐ ๋์ผ๋ฉฐ ํด์ ๋ชฉ์ ์ผ๋ก ์ถ์ถ ํ ๋ ๋ถ์ฐ์ด ํจ์ฌ ๋ ์ฌํฉ๋๋ค.์ฒดํฌ์ฌ๊ณผ ํด์ฑ์ ๋จ์ํ ๋ ๊ฐ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ด๋ฉฐ ํผ๋ํด์๋ ์๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฌ์ค, ๊ทธ๊ฒ์ด ์ด๋ก ์ ๋๋ค. ๋ฌธ์ ๋ ์ด๊ฒ์ด ํธ๋ฆฌํจ๊ณผ ํ์ฅ ์ค์ต์ ๋ฌด์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๋ฌ ๋ชฉ์ ์ ์ํด ํ๋์ "๋ฏน์"๋ฅผ ๊ฐ๋ ๊ฒ์ ํธ๋ฆฌํ๋ฉฐ ํ๋ก๊ทธ๋๋จธ๋ ํ๋์ ๋ง์กฑํ๊ณ ์์ด ๋ฒ๋ฆด ๊ฒ์ ๋๋ค. ๋๋ crc32๊ฐ ํด์ฑ์ ์ฌ์ฉ ๋ ๊ฒ์ ๋ช ๋ฒ์ด๋ ๋ณด์๋์ง ์ ์ ์๋ค. ๋จ์ง "์ถฉ๋ถํ ์์์ "์ด๋ผ๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ผ์ด๋์๋ ์๋๋ค๊ณ ๋งํ๊ธฐ๋ ์ฝ์ง๋ง ๊ณ์ํด์ ๋ฐ์ํฉ๋๋ค.
์ด ํ๊ฒฝ์์ ๋ ์ฌ์ฉ ์ฌ๋ก ๋ชจ๋์ ์ ์๋ํ๋๋ก ์ค๊ณ๋ ์๋ฃจ์ ์ ์ ์ํ๋ ๊ฒ์ ์ฌ์ฉ์์ ๊ธฐ๋์ ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ข์ ํด์์ ์์ฑ์ผ๋ก ์ธํด ์ค์ ๋ก ํด์์์ 8 ๋นํธ ๋๋ 16 ๋นํธ๋ฅผ ์ถ์ถ ํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ์ ์ผ๋ก 1/256 ๋๋ 1/65535 ์ถฉ๋ ํ๋ฅ ์ด ๋ฐ์ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ์๋๋ค.
๋จ์ง, ์ฐ๋ฆฌ๋ _history_์ ์ง์ฐ ์๊ฐ์ ๋ฐ์ ๋ค์ฌ์ผํฉ๋๋ค. ์ฌ๋๋ค์ ์ฒดํฌ์ฌ์ ์ํด ํน์ ์ฒดํฌ์ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ํน์ ๋ฐฉ์์ ์ต์ํฉ๋๋ค. ๋ ์ต๊ทผ์ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ ์๋ฃจ์ ์ด ์๋๋ผ๋ ์ต๊ด์ ๋น ๋ฅด๊ฒ ๋ณํ์ง ์์ต๋๋ค.