LSB ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ

์˜›๋‚  ์˜›์ ์— ๋‚˜๋Š” ๋‚ด ๊ธ€์„ ์ผ๋‹ค. ํ—ˆ๋ธŒ์˜ ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๋ฌธ์ œ, ์ฆ‰ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ์— ์ „๋…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก , ๊ทธ ์˜ค๋ž˜๋œ ์ฃผ์ œ์—์„œ ์ œ์•ˆ๋œ ํ•ด๊ฒฐ์ฑ…์€ ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๋ผ๊ณ  ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์˜ ๊ฒŒ์ž„์ผ ๋ฟ์ด์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฝค ํฅ๋ฏธ๋กœ์šด ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์กฐ๊ธˆ ๋” ๊นŠ๊ฒŒ ํŒŒ๊ณ ๋“ค์–ด LSB ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ๊ณ ์–‘์ด ์•„๋ž˜์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. (์ปท ์•„๋ž˜์—๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค: ์•ฝ XNUMXMB์ž…๋‹ˆ๋‹ค.)

์šฐ์„  ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”์˜ ๋ชฉ์ ์ด ๋น„๋ฐ€ ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์•”ํ˜ธํ™”์—๋Š” ๊ทธ ์šฉ๋„๊ฐ€ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ •๋ณด๊ฐ€ ์—†๋Š” ์ฒ™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ๊ฐ€ ๋ฐœ๋ช…๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค. Wikipedia๋Š” "์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ(๊ทธ๋ฆฌ์Šค์–ด ฯƒฯ„ฮตฮณฮฑฮฝฮฟฯƒ - ์ˆจ๊ฒจ์ง„ ๊ทธ๋ฆฌ์Šค์–ด ฮณฯฮฑฯˆฮฉ - ๋ฌธ์ž ๊ทธ๋Œ€๋กœ "๋น„๋ฐ€ ์“ฐ๊ธฐ"๋ผ๊ณ  ์”๋‹ˆ๋‹ค)๋Š” ์ „์†ก ์‚ฌ์‹ค์„ ๋น„๋ฐ€๋กœ ์œ ์ง€ํ•˜์—ฌ ์ˆจ๊ฒจ์ง„ ์ •๋ณด ์ „์†ก์˜ ๊ณผํ•™์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์•”ํ˜ธํ™”์™€ ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ ๋ฐฉ๋ฒ•์˜ ๊ฒฐํ•ฉ์„ ๊ธˆ์ง€ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด ์‹ค์ œ๋กœ ๊ทธ๋“ค์€ ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ์ž„๋ฌด๋Š” ๊ธฐ๋ณธ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Wikipedia ๊ธฐ์‚ฌ๋ฅผ์ฃผ์˜ ๊นŠ๊ฒŒ ์—ฐ๊ตฌํ•˜๋ฉด ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์†Œ์œ„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์™€ ๋ฉ”์‹œ์ง€. ์ปจํ…Œ์ด๋„ˆ๋Š” ๋น„๋ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆจ๊ธฐ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ •๋ณด์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๋Š” BMP ํ˜•์‹์˜ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์ด ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ํŒŒ์ผ ํ—ค๋”, ์ด๋ฏธ์ง€ ํ—ค๋”, ํŒ”๋ ˆํŠธ, ์ด๋ฏธ์ง€ ์ž์ฒด์˜ 4๊ฐœ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด์„œ๋Š” ํ—ค๋”์— ์“ฐ์—ฌ์ง„ ๋‚ด์šฉ๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ—ค๋”์˜ ์ฒ˜์Œ 4๋ฐ”์ดํŠธ๋Š” BM ์„œ๋ช…์ด๊ณ , ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ํŒŒ์ผ ํฌ๊ธฐ๋Š” ๋”๋ธ” ์›Œ๋“œ๋กœ ๊ธฐ๋ก๋˜๊ณ , ๋‹ค์Œ 24๋ฐ”์ดํŠธ๋Š” ์˜ˆ์•ฝ๋˜์–ด ์žˆ์œผ๋ฉฐ XNUMX์„ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋˜ ๋‹ค๋ฅธ ๋”๋ธ” ์›Œ๋“œ์—๋Š” ํ—ค๋” ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์˜คํ”„์…‹์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ด๋ฏธ์ง€์˜ ์‹ค์ œ ๋ฐ”์ดํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. XNUMX๋น„ํŠธ bmp ํŒŒ์ผ์—์„œ ๊ฐ ํ”ฝ์…€์€ XNUMX๊ฐœ์˜ BGR ๋ฐ”์ดํŠธ๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ด๋ฏธ์ง€์— ์–ด๋–ป๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” LSB ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์˜ ๋ณธ์งˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ‰์ƒ ์ธ์ฝ”๋”ฉ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฐ”์ดํŠธ์—์„œ ์ตœํ•˜์œ„ ๋น„ํŠธ๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€ ๋ฉ”์‹œ์ง€์˜ ๋‹ค์Œ ๋ฐ”์ดํŠธ๊ฐ€ 11001011์ด๊ณ  ์ด๋ฏธ์ง€์˜ ๋ฐ”์ดํŠธ๊ฐ€...11101100 01001110 01111100 0101100111...์ด๋ผ๋ฉด ์ธ์ฝ”๋”ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€ ๋ฉ”์‹œ์ง€ ๋ฐ”์ดํŠธ๋ฅผ 4๊ฐœ์˜ 11๋น„ํŠธ ๋ถ€๋ถ„(00, 10, 11, 111011)์œผ๋กœ ๋ถ„ํ• ํ•˜๊ณ  ์ด๋ฏธ์ง€์˜ ํ•˜์œ„ ๋น„ํŠธ๋ฅผ ๊ฒฐ๊ณผ ์กฐ๊ฐ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค: ...XNUMX11 01001100 01111110 0101100111โ€ฆ ์ด๋Ÿฌํ•œ ๊ต์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ์˜ ๋ˆˆ์—๋Š” ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”์šฑ์ด, ๋งŽ์€ ์˜ค๋ž˜๋œ ์ถœ๋ ฅ ์žฅ์น˜๋Š” ์ด๋Ÿฌํ•œ ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์กฐ์ฐจ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ตœํ•˜์œ„ ๋น„ํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ ์ˆ˜์— ๊ด€๊ณ„์—†์ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋น„ํŠธ๋ฅผ ๋ณ€๊ฒฝํ• ์ˆ˜๋ก ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ์›๋ณธ ์ด๋ฏธ์ง€์— ๋” ๋งŽ์€ ๊ฐ„์„ญ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์€ ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.

LSB ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ
LSB ์Šคํ…Œ๊ฐ€๋…ธ๊ทธ๋ž˜ํ”ผ

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

๋ฌธ์ž์—ด์— ์ €์žฅ๋œ ํ…์ŠคํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์“ฐ๊ณ  ํ•˜์œ„ XNUMX๋ฐ”์ดํŠธ๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋…น์Œ ์ฝ”๋“œ:

i:=1 ~ length(str) do
    ์‹œ์ž‘ํ•˜๋‹ค
      l1:=byte(str[i]) shr 6;
      l2:=byte(str[i]) shl 2; l2:=l2 shr 6;
      l3:=byte(str[i]) shl 4; l3:=l3 shr 6;
      l4:=byte(str[i]) shl 6; l4:=l4 shr 6;
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l1;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l2;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l3;
      f.WriteBuffer(tmp,1);
 
      f.ReadBuffer(tmp,1);
      f.Position:=f.Position-1;
      tmp:=((tmp shr 2) shl 2)+l4;
      f.WriteBuffer(tmp,1);
 
    ๋;

์ฝ์„ ์ฝ”๋“œ:

i:=1์—์„œ MsgSize๋กœ ์ˆ˜ํ–‰
    ์‹œ์ž‘ํ•˜๋‹ค
      f.ReadBuffer(tmp,1);
      l1:=tmp shl 6;
      f.ReadBuffer(tmp,1);
      l2:=tmp shl 6; l2:=l2 shr 2;
      f.ReadBuffer(tmp,1);
      l3:=tmp shl 6; l3:=l3 shr 4;
      f.ReadBuffer(tmp,1);
      l4:=tmp shl 6; l4:=l4 shr 6;
      str:=str+char(l1+l2+l3+l4);
    ๋;

์Œ, ์ •๋ง ๊ฒŒ์œผ๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด- ํ”„๋กœ๊ทธ๋žจ ๋ฐ ํ•ด๋‹น ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋งํฌ.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€