<p>์˜ค๋ฅ˜ ๊ฐ์ง€๋ฅผ์œ„ํ•œ ์ฒดํฌ์„ฌ์œผ๋กœ์„œ์˜ xxHash</p>

์— ๋งŒ๋“  2019๋…„ 07์›” 16์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Cyan4973/xxHash

๋‚ด๊ฐ€ ๊ณ„์†ํ•ด์„œ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ํ•ด์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฒดํฌ์„ฌ์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ (๋˜๋Š” ๊ทธ๋ž˜์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€)์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ „ํ†ต์ ์œผ๋กœ ํ•ด์‹œ๋Š” ๋ฌธ์ž์—ด๊ณผ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (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์™€ ์–ด๋–ป๊ฒŒ ๊ฒฝ์Ÿํ•ฉ๋‹ˆ๊นŒ? ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

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_์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ฐ›์•„ ๋“ค์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ฒดํฌ์„ฌ์„ ์œ„ํ•ด ํŠน์ • ์ฒดํฌ์„ฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํŠน์ • ๋ฐฉ์‹์— ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ตœ๊ทผ์˜ ์ž ์žฌ์ ์œผ๋กœ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ๋”๋ผ๋„ ์Šต๊ด€์€ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  11 ๋Œ“๊ธ€

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 %์ฒ˜๋Ÿผ ์‹ค์งˆ์ ์ธ ์–‘์œผ๋กœ ์ธ์‹๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด๋‹ค ์ •ํ™•ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ํ‘œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
collision probabilities

ie : 1 / 2 ^ 64 ์€ ๋จธ๋ฆฌ์— ์ง์ ‘ ํ˜œ์„ฑ์„๋ฐ›์„ ํ™•๋ฅ ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ๊ณ , ์ „๊ตญ ๋ณต๊ถŒ _3 ๋ฒˆ ์—ฐ์† ๋‹น์ฒจ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ "null"์— ํ›จ์”ฌ ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„๊ทธ ์†Œ์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋†’์€ ํ™•๋ฅ ๋กœ ์ค‘๋‹จ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ์ด๋ก ์  ์ธ 1 ๋น„ํŠธ ์ถฉ๋Œ์„ ์ฐพ๊ณ ์žํ•œ๋‹ค๋ฉด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ๋‹นํžˆ ๊ฑฐ๋Œ€ํ•œ ์ž…๋ ฅ๊ณผ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„์˜ ํž˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์†”๋ฃจ์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋œ ์‚ฐ์ˆ ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ๋‹จ์ผ ๋น„ํŠธ ์ˆ˜์ •์œผ๋กœ ์ถฉ๋Œ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ ์ ์–ด๋„ 2 ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋„ ์›ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํŠน์ • ์ž…๋ ฅ ์œ„์น˜์— ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์ˆ˜์ •์ด ๋” ์ด์ƒ "๋ฌด์ž‘์œ„"๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋น„ ์•”ํ˜ธํ™” ํ•ด์‹œ.

ํ•˜์ง€๋งŒ ์ธ์šฉ ๋œ ํ…์ŠคํŠธ๊ฐ€ ์ด๋ฏธ์ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ crc ๋Š” ํ•ด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณผ๊ฑฐ์—๋Š” ์‹ ํ˜ธ๊ฐ€ ๋น„ํŠธ ๋ ˆ๋ฒจ์—์„œ ์ˆ˜์ •๋˜๊ธฐ ์‰ฌ์› ์„ ๋•Œ์™€ ์ฒดํฌ์„ฌ ์ž์ฒด๊ฐ€ ๋‹ค์†Œ ์ž‘์„ ๋•Œ (16 ๋น„ํŠธ ๋˜๋Š” 32 ๋น„ํŠธ) ํ›จ์”ฌ ๋” ์˜๋ฏธ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 16 ๋น„ํŠธ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ์ ์€ ๋น„ํŠธ ํ”Œ๋ฆฝ๊ณผ ๊ด€๋ จ๋œ ์ถฉ๋Œ์„ ๋†“์น  ์ˆ˜์žˆ๋Š” ๋ฌด์‹œํ•  ์ˆ˜์—†๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ž‘์—…์— ๋œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ 64 ๋น„ํŠธ ๋˜๋Š” 128 ๋น„ํŠธ ํ•ด์‹œ๊ฐ€ ํ…Œ์ด๋ธ”์— ์žˆ์œผ๋ฏ€๋กœ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ, ๋”ฐ๋ผ์„œ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์†์ƒ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ํ—ค์•„๋ฆด ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์œ„ํ—˜ํ•œ ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋น„ํŠธ๋Š” ๋งค์šฐ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ๋†’์œผ๋ฉฐ ํ•ด์‹œ ๋ชฉ์ ์œผ๋กœ ์ถ”์ถœ ํ•  ๋•Œ ๋ถ„์‚ฐ์ด ํ›จ์”ฌ ๋” ์‹ฌํ•ฉ๋‹ˆ๋‹ค.

์™œ ๋‚˜์œ๊ฐ€์š”?

ํ•ด์‹œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒดํฌ์„ฌ ๊ต์ฒด๋ณด๋‹ค ๋” ๋งŽ์€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๋น„ํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„ํŠธ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์˜ˆ์ธก ๊ฐ€๋Šฅ ํ•ด์ง€๋ฉด ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์œ„์น˜ ๋ถ„ํฌ๊ฐ€ ๋” ์ด์ƒ "๋ฌด์ž‘์œ„"๊ฐ€๋˜์ง€ ์•Š๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ผ๋ถ€ ์…€์ด ๋‹ค๋ฅธ ์…€๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ๋˜์–ด ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. .

๋น„ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“  ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด์ด ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์ƒ๋œ ํŒŒ์ผ์„ ๋ณต๊ตฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.
ํ•˜๋‚˜๋Š” CRC๋กœ ์†์ƒ๋œ ์ž…๋ ฅ์„ ๋ณต๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CRC๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ ํ•  ์ˆ˜๋งŒ ์žˆ๊ณ  ๋ณต๊ตฌ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ž๊ฐ€ ๋ณต๊ตฌ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ์ œ์ด๋ฉฐ ์ปจ๋ณผ ๋ฃจ์…˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ (๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋” ๊ณ„์‚ฐ์ ์œผ๋กœ ๊ด€๋ จ๋œ) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ์ด๋ก ์  ์ธ 1 ๋น„ํŠธ ์ถฉ๋Œ์„ ์ฐพ๊ณ ์žํ•œ๋‹ค๋ฉด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ๋‹นํžˆ ๊ฑฐ๋Œ€ํ•œ ์ž…๋ ฅ๊ณผ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„์˜ ํž˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์†”๋ฃจ์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋œ ์‚ฐ์ˆ ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ๋‹จ์ผ ๋น„ํŠธ ์ˆ˜์ •์œผ๋กœ ์ถฉ๋Œ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ ์ ์–ด๋„ 2 ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋„ ์›ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํŠน์ • ์ž…๋ ฅ ์œ„์น˜์— ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์ˆ˜์ •์ด ๋” ์ด์ƒ "๋ฌด์ž‘์œ„"๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋น„ ์•”ํ˜ธํ™” ํ•ด์‹œ.

261์€ XXH3์˜ 64 ๋น„ํŠธ ๋ณ€ํ˜•์—์„œ ๋‹จ์ผ ๋น„ํŠธ ์ถฉ๋Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ณผ์—ฐ; ์ข€ ๋” ์™„๋ฒฝํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ๋‚ด ์ด์ „ ์ง„์ˆ ์€ 240 ๋ฐ”์ดํŠธ ์ด์ƒ์˜ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํฐ ํฌ๊ธฐ ์„น์…˜์— ๋Œ€ํ•œ ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ, ์ž…๋ ฅ์ด 64 ๋น„ํŠธ secret ์ค‘ ํ•˜๋‚˜์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผํ•˜๋Š” ์ œํ•œ๋œ ๋ฒ”์œ„์˜ ํฌ๊ธฐ์—์„œ๋Š” ๋‹จ์ผ ๋น„ํŠธ ์ถฉ๋Œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์œ„์น˜์—์„œ ์ •ํ™•ํ•œ 64 ๋น„ํŠธ ์ž…๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ถฉ๋Œ์ด ์—ฌ์ „ํžˆ์ด 1 / 2^64 ์˜์—ญ ๋‚ด์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด ์ž„์˜์ ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค (์ฆ‰, ์ถฉ๋Œ์„ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์Œ). ๋˜ํ•œ ์ผ์น˜์‹œํ‚ฌ secret ๋Š” ํšจ๊ณผ์ ์œผ๋กœ _secret_ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์™ธ๋ถ€ ๊ณต๊ฒฉ์ž๊ฐ€์ด๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

1 ๋น„ํŠธ์˜ ๋ฐ์ดํ„ฐ ๋งŒ ๋ณ€๊ฒฝํ•ด๋„ ๋””์ฝ”๋”๋ฅผ ์†์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ?

2 ๊ฐœ์˜ ๋‹ค๋ฅธ ์ฝ˜ํ…์ธ ์—์„œ ์ƒ์„ฑ ๋œ ํ•ด์‹œ ๊ฐ’์„ ๊ณ ๋ คํ•  ๋•Œ ์ถฉ๋Œ ํ™•๋ฅ ์€ ํ•ญ์ƒ 1 / 2^64 ( xxh64 ๋˜๋Š” xxh3 ์™€ ๊ฐ™์€ ์–‘์งˆ์˜ 64 ๋น„ํŠธ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ). ์ด ๋‘ ์ฝ˜ํ…์ธ  ์‚ฌ์ด์˜ ์ˆ˜ ์ •๋Ÿ‰.

์‹ค์ œ๋กœ ์ ์–ด๋„ ์ด๋ก ์ ์œผ๋กœ๋Š” ๋‹จ์ผ ๋น„ํŠธ์˜ ๋ณ€๊ฒฝ์ด ์ถฉ๋Œ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ์ด ํ™•๋ฅ ์€ 1 / 2^64 ์ด๋ฉฐ, ์ด๋Š” ๊ฑฐ์˜ ๊ทน์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค.
์‚ฌ๋žŒ๋“ค์€์ด ์ฃผ์ œ๋ฅผ ๋น„๊ต์  ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋•Œ๋•Œ๋กœ ๊ทธ๊ฒƒ์„ "์ž‘์€"๊ณผ ํ˜ผ๋™ํ•˜๋Š”๋ฐ, ์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์˜ ๋งˆ์Œ์—์„œ ~ 10 %์ฒ˜๋Ÿผ ์‹ค์งˆ์ ์ธ ์–‘์œผ๋กœ ์ธ์‹๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด๋‹ค ์ •ํ™•ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ํ‘œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
collision probabilities

ie : 1 / 2 ^ 64 ์€ ๋จธ๋ฆฌ์— ์ง์ ‘ ํ˜œ์„ฑ์„๋ฐ›์„ ํ™•๋ฅ ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ๊ณ , ์ „๊ตญ ๋ณต๊ถŒ _3 ๋ฒˆ ์—ฐ์† ๋‹น์ฒจ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ "null"์— ํ›จ์”ฌ ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„๊ทธ ์†Œ์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋†’์€ ํ™•๋ฅ ๋กœ ์ค‘๋‹จ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ์ด๋ก ์  ์ธ 1 ๋น„ํŠธ ์ถฉ๋Œ์„ ์ฐพ๊ณ ์žํ•œ๋‹ค๋ฉด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ๋‹นํžˆ ๊ฑฐ๋Œ€ํ•œ ์ž…๋ ฅ๊ณผ ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„์˜ ํž˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์†”๋ฃจ์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋œ ์‚ฐ์ˆ ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ๋‹จ์ผ ๋น„ํŠธ ์ˆ˜์ •์œผ๋กœ ์ถฉ๋Œ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ ์ ์–ด๋„ 2 ๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋„ ์›ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํŠน์ • ์ž…๋ ฅ ์œ„์น˜์— ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์ˆ˜์ •์ด ๋” ์ด์ƒ "๋ฌด์ž‘์œ„"๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋น„ ์•”ํ˜ธํ™” ํ•ด์‹œ.

ํ•˜์ง€๋งŒ ์ธ์šฉ ๋œ ํ…์ŠคํŠธ๊ฐ€ ์ด๋ฏธ์ด ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ crc ๋Š” ํ•ด๋ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณผ๊ฑฐ์—๋Š” ์‹ ํ˜ธ๊ฐ€ ๋น„ํŠธ ๋ ˆ๋ฒจ์—์„œ ์ˆ˜์ •๋˜๊ธฐ ์‰ฌ์› ์„ ๋•Œ์™€ ์ฒดํฌ์„ฌ ์ž์ฒด๊ฐ€ ๋‹ค์†Œ ์ž‘์„ ๋•Œ (16 ๋น„ํŠธ ๋˜๋Š” 32 ๋น„ํŠธ) ํ›จ์”ฌ ๋” ์˜๋ฏธ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 16 ๋น„ํŠธ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ์ ์€ ๋น„ํŠธ ํ”Œ๋ฆฝ๊ณผ ๊ด€๋ จ๋œ ์ถฉ๋Œ์„ ๋†“์น  ์ˆ˜์žˆ๋Š” ๋ฌด์‹œํ•  ์ˆ˜์—†๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ž‘์—…์— ๋œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ 64 ๋น„ํŠธ ๋˜๋Š” 128 ๋น„ํŠธ ํ•ด์‹œ๊ฐ€ ํ…Œ์ด๋ธ”์— ์žˆ์œผ๋ฏ€๋กœ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ, ๋”ฐ๋ผ์„œ ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์†์ƒ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ํ—ค์•„๋ฆด ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์œ„ํ—˜ํ•œ ์˜ต์…˜์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋น„ํŠธ๋Š” ๋งค์šฐ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ๋†’์œผ๋ฉฐ ํ•ด์‹œ ๋ชฉ์ ์œผ๋กœ ์ถ”์ถœ ํ•  ๋•Œ ๋ถ„์‚ฐ์ด ํ›จ์”ฌ ๋” ์‹ฌํ•ฉ๋‹ˆ๋‹ค.

์™œ ๋‚˜์œ๊ฐ€์š”?

ํ•ด์‹œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒดํฌ์„ฌ ๊ต์ฒด๋ณด๋‹ค ๋” ๋งŽ์€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ชฉ์ ์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๋น„ํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„ํŠธ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์˜ˆ์ธก ๊ฐ€๋Šฅ ํ•ด์ง€๋ฉด ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์œ„์น˜ ๋ถ„ํฌ๊ฐ€ ๋” ์ด์ƒ "๋ฌด์ž‘์œ„"๊ฐ€๋˜์ง€ ์•Š๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ผ๋ถ€ ์…€์ด ๋‹ค๋ฅธ ์…€๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ๋˜์–ด ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. .

๋น„ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“  ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๋ฉด์ด ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์ƒ๋œ ํŒŒ์ผ์„ ๋ณต๊ตฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.
ํ•˜๋‚˜๋Š” CRC๋กœ ์†์ƒ๋œ ์ž…๋ ฅ์„ ๋ณต๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CRC๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ ํ•  ์ˆ˜๋งŒ ์žˆ๊ณ  ๋ณต๊ตฌ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ž๊ฐ€ ๋ณต๊ตฌ ๋ฐ์ดํ„ฐ๋Š” ์ฃผ์ œ์ด๋ฉฐ ์ปจ๋ณผ ๋ฃจ์…˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ (๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋” ๊ณ„์‚ฐ์ ์œผ๋กœ ๊ด€๋ จ๋œ) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  1. LZ4์—๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์— ๋Œ€ํ•œ ์ฝ˜ํ…์ธ  ์ฒดํฌ์„ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1GB ํŒŒ์ผ์˜ 10 ^ 6 ํŒจํ‚ท์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    ์ถฉ๋Œ ํ™•๋ฅ ์€ 1 / 2 ^ 32 = 0.0000000002์ž…๋‹ˆ๋‹ค. ์ฆ‰, 10 ^ 10 (์ด ๊ฑฐ๋Œ€ํ•œ ํฌ๊ธฐ) ํŒจํ‚ท์„ ๋ณด๋‚ด๋ฉด ๋‘ ๋ฒˆ์˜ ์ถฉ๋Œ (Pigeonhole ์›์น™์— ๋”ฐ๋ผ)์ด์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ์ด ์–‘๋ณด๋‹ค ์ ๊ฒŒ ๋ณด๋‚ด๋ฉด ํ™•๋ฅ ์ด ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋””์ฝ”๋”๊ฐ€ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•˜์—ฌ ํŒจํ‚ท ์ฒดํฌ์„ฌ๊ณผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ๋Œ์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ?
  2. ์ฝ˜ํ…์ธ  ์ฒดํฌ์„ฌ์€ ์••์ถ• ๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฒดํฌ์„ฌ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค (์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜ ์ถฉ๋Œ ํ™•๋ฅ ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (CC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ถฉ๋Œ ํ™•๋ฅ ์€ 1/2 ^ 32์ด๊ณ  ๊ทธ๋Ÿฌ๋ฉด 1/2 ^ 64.)

์„ค๋ช… ๋œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • LZ4 ์••์ถ• ๋ฐ์ดํ„ฐ๊ฐ€ ์†์ƒ๋จ (์ด๋ฏธ ๊ทธ ์ž์ฒด๋กœ๋Š” ๋งค์šฐ ๋“œ๋ฌธ ์ด๋ฒคํŠธ ์ž„)
  • ํ•ด์‹œ ์ถฉ๋Œ๋กœ ์ธํ•ด ๊ฐ์ง€๋˜์ง€ ์•Š์€ ์†์ƒ์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰