ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FORENSICS ์‹œ์ž‘ํ•˜๊ธฐ - ๊ธฐ์ดˆ ๊ฐœ๋… 02 :: ์ธ์ฝ”๋”ฉ์ด๋ž€? ASCII, Hex, URL, Base 64, ์œ ๋‹ˆ์ฝ”๋“œ
    SECURITY/FORENSICS 2020. 9. 11. 00:50

    0. ์ธ์ฝ”๋”ฉ์ด๋ž€?

     

    character encoding

     

    : ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ๋ถ€ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ฆ‰, ์ปดํ“จํ„ฐ๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ํ˜ธ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

     

    ์ •๋ณด์˜ ํ˜•ํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ด์œผ๋กœ์จ ์ฒ˜๋ฆฌ ์†๋„ ํ–ฅ์ƒ, ์ €์žฅ ๊ณต๊ฐ„ ์ ˆ์•ฝ์™€ ํ˜•์‹์˜ ํ‘œ์ค€ํ™”๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

     

    ์˜ˆ๋ฅผ ๋“ค์–ด, 'A' ๋ผ๋Š” ๊ธ€์ž๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ปดํ“จํ„ฐ๋Š” ์ €์žฅํ•  ๋•Œ (์ผ์ข…์˜ ๊ธฐ์ค€์— ์˜ํ•ด) '65' ๋ผ๊ณ  ์ €์žฅํ•˜๊ณ  ์ธ์‹ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. (A ๋ฅผ ๋ณด๊ณ  65 ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ธ์ฝ”๋”ฉ, ์ €์žฅ๋œ 65๋ฅผ A ๋ผ๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋””์ฝ”๋”ฉ์ด๋‹ค.) (์‰ฝ๊ฒŒ ๋งํ•ด '65'์ง€๋งŒ, ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด 65๋ฅผ 0,1 ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค)

     

    ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ์— ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์ด ์กด์žฌํ•˜๋Š”๋ฐ, ๊ทธ ๊ธฐ์ค€์„ ๋ฌธ์ž์—ด ์„ธํŠธ ๋˜๋Š” ๋ฌธ์ž์…‹์ด๋ผ๊ณ  ํ•˜๊ณ , ๋Œ€ํ‘œ์ ์œผ๋กœ ASCII, ์œ ๋‹ˆ์ฝ”๋“œ ๋“ฑ์ด ์žˆ๋‹ค.

     

     

    1. ASCII ์˜ ์›๋ฆฌ ๋ฐ ์‚ฌ์šฉ ๋ถ„์•ผ

     

    ASCII (American Standard Code for Information Interchange) ๋Š” ์ตœ์ฝ”์˜ ๋ฌธ์ž ์ฝ”๋“œ๋กœ์„œ,

    ๋ผํ‹ด ๋ฌธ์ž, ์ˆซ์ž, ๊ทธ๋ฆฌ๊ณ  ๋ช‡๋ช‡ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ 128๊ฐœ(2^7)์˜ ์ฝ”๋“œ๊ฐ’์— 1:1 ๋Œ€์‘์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    (0x00 ๋ถ€ํ„ฐ 0x7F ๊นŒ์ง€)

     

    ASCII ์—๋Š” ์ œ์–ด ๋ฌธ์ž(33๊ฐœ)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ, ์ด๋“ค์„ ์ œ์™ธํ•˜๋ฉด ์‚ฌ์‹ค ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ž๋Š” 128 ๊ฐœ๋ณด๋‹ค ์ ๋‹ค(95๊ฐœ).

    (์ œ์–ด ๋ฌธ์ž๋“ค์€ ์—ญ์‚ฌ์ ์ธ ์ด์œ ๋กœ ๋‚จ์•„ ์žˆ์œผ๋ฉด ์ง€๊ธˆ์€ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

     

    ์•„์Šคํ‚ค 7 bit + ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ(parity bit) = 8 bit ๋กœ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ์™€ ๊ด€๋ จํ•œ ์ทจ์•ฝ์  ๋•Œ๋ฌธ์— ๊ณง ์“ฐ์ด์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค.

    ๋‚˜์ค‘์— ์ปดํ“จํ„ฐ๊ฐ€ 8 bit = 1 byte ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ธฐ์กด 7 bit ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์•ž์— 0 ์„ ๋ถ™์—ฌ์„œ 8 bit ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹์ด ์ƒ๊ฒจ๋‚ฌ๋‹ค. (-> ํ‘œ์ค€ํ™” ํ•„์š”์„ฑ..)

     

    ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •๋ณด ๊ตํ™˜๊ณผ ์—๋Ÿฌ ๊ฒ€์ถœ์„ ์œ„ํ•˜ ๊ทœ๊ฒฉ์ด์—ˆ์ง€๋งŒ ๋ผํ‹ด ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ง€์—ญ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

    ๊ทธ๋ž˜๋„ ์˜๋ฌธ ์•ŒํŒŒ๋ฒณ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด๋ผ ์ปดํ“จํ„ฐ์™€ ํ†ต์‹  ์žฅ๋น„๋ฅผ ๋น„๋กฏํ•œ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์žฅ์น˜์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์ด ์•„์Šคํ‚ค์— ๊ธฐ์ดˆ๋ฅผ ๋‘๊ณ  ์žˆ๋‹ค.

     

     

    ASCII ์ฝ”๋“œ ํ‘œ

     

    2. Hex ์˜ ์›๋ฆฌ ๋ฐ ์‚ฌ์šฉ ๋ถ„์•ผ

     

    Hexadecimal ์€ 16 ์„ ๋ฐ‘์œผ๋กœ ํ•˜๋Š” ๊ธฐ์ˆ˜๋ฒ•์ด๋‹ค. 

    0~9 ์™€ A~F ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€์†Œ๋ฌธ์ž๋Š” ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๋Š”๋‹ค. (์ฆ‰, 1 ์€ 1, 10 ์€ A, 15 ์€ F)

     

    ์ปดํ“จํ„ฐ์—์„œ ์ด์ง„์ˆ˜๋ฅผ ๋Œ€์‹ ํ•ด ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋Š”๋ฐ, 16 ์ง„์ˆ˜ ์ž๋ฆฟ์ˆ˜ ํ•˜๋‚˜๊ฐ€ 2^4 ์„ ํ‘œํ•œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ฆ‰, ์ž๋ฆฟ์ˆ˜ 2๊ฐœ๋ฉด 2^8๋กœ 1 byte ์ด๊ธฐ ๋•Œ๋ฌธ!

    ex. 1000(2) == 8(16) / 0011(2) == 3(16)

     

    ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ hex ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    e == 65(16) / x == 78(16) / y == 79(16)

    (๋‹ค๋ฅธ ๋ฌธ์ž๋“ค์— ๋Œ€ํ•œ hex ํ‘œ๋“ค๋„ ์žˆ๋‹ค.)

     

    hex ํ‘œํ˜„์€ ํŠนํžˆ ์ƒ‰์ƒ ์ฝ”๋“œ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. : ํ—ฅ์‚ฌ ์ฝ”๋“œ

    ํ—ฅ์‚ฌ ์ฝ”๋“œ๋Š” RGB ๋ฐฉ์‹์˜ ์ƒ‰์ƒ ์ฝ”๋“œ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ, # ๋’ค์— ๋ถ™๋Š” ์—ฌ์„ฏ ์ž๋ฆฌ์˜ ์ˆซ์ž๋กœ ์ƒ‰์ƒ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    ๋‘ ์ž๋ฆฌ์”ฉ ๊ฐ๊ฐ Red, Green, Blue ์˜ ๊ฐ•๋„๋ฅผ 256(2^8) ๋‹จ๊ณ„์— ๊ฑธ์ณ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋ฉฐ

    ๊ฐ ๋‘ ์ž๋ฆฌ๋Š” 16์ง„์ˆ˜, hex ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 00 == 0(16), FF == 255(16)

    (ํ—ฅ์Šค ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ƒ‰์ƒ์˜ ์ˆ˜๋Š” ์ด 16^6=16,777,216๊ฐ€์ง€์ด๋‹ค.)

     

    ๋˜ ์ฃผ๋กœ URL ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•จ~

     

    ๋‹จ์ ์€ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ ! bit ์•ˆ์—์„œ ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์ด 50% ์ •๋„..... ๊ทธ๋ž˜์„œ ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ๋งŒ ์“ฐ๊ณ  ๋ณ„๋กœ ์•ˆ์“ฐ๋Š”๋“ฏ.

    base 32 ๋‚˜ base 64 ๋Š” 63%~75% ์ธ๋ฐ...

     

     

    3. URL ์˜ ์›๋ฆฌ ๋ฐ ์‚ฌ์šฉ ๋ถ„์•ผ

     

    URL (Uniform Resource Locators) ์€ ์›น์—์„œ ์ •ํ•ด์ง„ ์ž์›์˜ ์ฃผ์†Œ์ด๋‹ค. (๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์–ด๋”” ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•จ)

    ์ด๋ก ์ ์œผ๋กœ ๊ฐ๊ฐ์˜ ์œ ์ผํ•œ URL ์€ ์œ ์ผํ•œ ์ž์›์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 

    (์˜ˆ์™ธ: ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž์› or ์˜ฎ๊ฒจ์ง„ ์ž์›)

     

     

    URL ๋„ ์ธ์ฝ”๋”ฉ์„ ํ•˜๋Š”๋ฐ, URL ์ด ์•„์Šคํ‚ค ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š๊ฒŒ ์ „์†กํ•œ ๊ฒฝ์šฐ์—” (๋ธŒ๋ผ์šฐ์ €์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ) ? & / ๊ณต๋ฐฑ๋ฌธ์ž ๋“ฑ์˜ ํŠน์ˆ˜ ๋ฌธ์ž๋“ค์ด ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€ํ˜•๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ URL ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž๋“ค(% # ๋“ฑ ์˜ˆ์•ฝ ๋ฌธ์ž. ๋ฌธ๋ฒ•์  ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค) ๊ณผ ๊ตฌ๋ถ„ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๊ด€๋ จ ํŠน์ˆ˜๋ฌธ์ž๋“ค์€ ๊ผญ ์ธ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•œ๋‹ค.

     

     

    URL ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์€ Percent-encoding ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

    : URL ํ˜น์€ URL ์˜ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹. RFC 3986 ์— ๋”ฐ๋ผ ๋ฌธ์ž๋“ค์„ 16์ง„์ˆ˜ ๊ฐ’์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

    ์ฆ‰, ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž๋Š” % ์™€ 16์ง„์ˆ˜ ๋ฌธ์ž๋ฅผ ์กฐํ•ฉํ•ด ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (->: ์ด์Šค์ผ€์ดํ”„(escape) ์ฒ˜๋ฆฌ๋œ URL)

    ์ด ๋•Œ URL ์— ๊ณต๋ฐฑ ๋ฌธ์ž๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋–„๋ฌธ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

     

    ex. ๋Œ€์ถ” world = %EB%8C%80%EC%B6%94%20world (UTF-8)

    (์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๋ฐฑ์„ + ํ˜น์€ %20 ์œผ๋กœ ๋ฐ”๊พผ๋‹ค)

     

    ์ด๋Ÿฐ์‹์ด๋‹ค..~

    ์ €๋Ÿฐ ํผ์„ผํŠธ+์ˆซ์ž๋“ค์˜ ์กฐํ•ฉ์„ ๋งํฌ ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•  ๋•Œ ๋งŽ์ด ๋ณด์ง€ ์•Š์•˜๋Š”๊ฐ€,, ๊ทธ๋Ÿฐ ๊ฒƒ์ด๋‹ค~

     

    ์‚ฌ์šฉ ๋ถ„์•ผ๋Š” ๋ง ๊ทธ๋Œ€๋กœ URL ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

     

     

    4. Base64 ์˜ ์›๋ฆฌ ๋ฐ ์‚ฌ์šฉ ๋ถ„์•ผ

     

    : 8๋น„ํŠธ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ๊ณตํ†ต ASCII ์˜์—ญ์˜ ๋ฌธ์ž๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์ผ๋ จ์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด๋‹ค.

     

    Base 64, 64 ์ง„๋ฒ•์ด๋ผ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ASCII ๋ฌธ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ์ง„๋ฒ•์ด๋ผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. (ACSII ์˜ ์‹ค์‚ฌ์šฉ ๋ฌธ์ž๋Š” 128๊ฐœ๋ณด๋‹ค ์ž‘์Œ)

    (64 = 2^6 ์œผ๋กœ, 2์˜ ์ œ๊ณฑ์ˆ˜๋“ค์— ๊ธฐ๋ฐ˜ํ•œ ์ง„๋ฒ•๋“ค ์ค‘์— ASCII ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ง„๋ฒ•.)

     

    ์–ด๋–ค ๋ฌธ์ž์™€ ๊ธฐํ˜ธ๋ฅผ ์“ฐ๋Š๋ƒ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋ณ€์ข…์ด ์žˆ์œผ๋‚˜,

    ๋ณดํ†ต ์ฒ˜์Œ 62๊ฐœ๋Š” A-Z, a-z, 0-9 ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ์— ์–ด๋–ค ๊ธฐํ˜ธ๋ฅผ ์“ฐ๋Š๋ƒ์˜ ์ฐจ์ด๋งŒ ์žˆ๋‹ค.

     

     

    BASE 64 ์ƒ‰์ธํ‘œ

     

    ์‚ฌ์šฉ ๋ถ„์•ผ๋Š” ์ „์ž ๋ฉ”์ผ์„ ํ†ตํ•œ ์ด์ง„ ๋ฐ์ดํ„ฐ ์ „์†ก.

    ์ฆ‰, ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ํ†ต์‹ ์—์„œ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

     

    Base 64 ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ์ „์†กํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์•ฝ 33% ์ •๋„ ๋Š˜์ง€๋งŒ (6bit ๋‹น 2bit์˜ overhead ๋ฐœ์ƒ) , 

    ASCII ๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ „๋‹ฌํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ASCII ์ค‘ ์ผ๋ถ€ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ, 64๊ฐœ์˜ ์•ˆ์ „ํ•œ ์ถœ๋ ฅ ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” Base 64 ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    (ASCII ๋Š” 7bit ์ธ์ฝ”๋”ฉ์ด๋ผ ๋‚˜๋จธ์ง€ 1 bit ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฅด๊ณ , ์ผ๋ถ€ ์ œ์–ด ๋ฌธ์ž์˜ ๊ฒฝ์šฐ์—๋„ ์‹œ์Šคํ…œ ๋ณ„๋กœ ๋‹ค๋ฅธ ์ฝ”๋“œ ๊ฐ’์„ ๊ฐ€์ ธ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์™œ๊ณก๋  ์—ฌ์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

     

     

    Base 64 ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    1) ์ธ์ฝ”๋”ฉํ•  ๋ฌธ์ž๋ฅผ ASCII binary ๋กœ ๋ฐ”๊พผ๋‹ค.

    2) 6 bit ์”ฉ ์ž๋ฅธ๋‹ค.

    3) ๊ฐ 6 bit ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ base 64 ์ƒ‰์ธํ‘œ์—์„œ ์ฐพ์•„์„œ ์น˜ํ™˜ํ•œ๋‹ค.

    4) ๋งŒ์ผ ๋”ฑ ์ž˜๋ผ ๋Š์–ด์ง€์ง€ ์•Š๊ณ  ๋นˆ์ž๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๋ฉด Padding ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

     

    ์˜ˆ์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ณด์ž.

     

    YES ๋ผ๋Š” ๋ฌธ์ž์—ด์„ Base 64 ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. (์ƒ‰์ธ์€ ์œ„์˜ ์ƒ‰์ธํ‘œ๋ฅผ ์‚ฌ์šฉ)

     

    ๋ฌธ์ž์—ด Y E S
    ASCII ๊ฐ’ (binary) 01011001 01000101 01010011

     

    6 bit ๋ฌถ์Œ 010110 010100 010101 010011
    10 ์ง„์ˆ˜ ๋ณ€ํ™˜ (ํŽธ์˜) 22 20 21 19
    base 64 W U V T

     

    ๋”ฐ๋ผ์„œ ๋ณ€ํ™˜ํ•œ ๊ฐ’์€ WUVT

     

    ์ด ๊ณผ์ •์—์„œ๋Š” ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์ง€๋งŒ, ๋งŒ์ผ ๋‚จ์€ ๋ฐ”์ดํŠธ๊ฐ€ 3 byte ๋ฏธ๋งŒ์ด๋ผ๋ฉด ๋ฒ„ํผ์˜ ๋‚จ์€ ๋ถ€๋ถ„์— Padding bit (0) ์„ ์ถ”๊ฐ€ํ•˜์—ฌ = ๋ฌธ์ž๋กœ ๋Œ€์‹ ํ•œ๋‹ค.

    ์ด๋Š” ๋น„ํŠธ์ˆ˜๋ฅผ ๋งž์ถฐ ์›๋ณธ์— ์—†๋Š” ๋น„ํŠธ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

     

    (์ฐธ๊ณ  - ifuwanna.tistory.com/72)

     

     

     

    5. ์œ ๋‹ˆ์ฝ”๋“œ์˜ ์›๋ฆฌ ๋ฐ ์‚ฌ์šฉ ๋ถ„์•ผ

     

    ์œ ๋‹ˆ์ฝ”๋“œ(Unicode) ๋Š” ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ปดํ“จํ„ฐ์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์‚ฐ์—… ํ‘œ์ค€์ด๋ฉฐ, ์œ ๋‹ˆ์ฝ”๋“œ ํ˜‘ํšŒ(Unicode Consortium) ๊ฐ€ ์ œ์ •ํ•œ๋‹ค.

      --> ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๊ตญ์ œํ‘œ์ค€ ๋ฌธ์žํ‘œ์ด๋‹ค.

     

    ํ˜„์กดํ•˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์„ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ํ‘œ์ค€ํ™”์‹œํ‚ค๋ ค๋Š” ๋ชฉ์ ์— ๋งž๊ฒŒ, ๋‹ค์–‘ํ•œ ๋ฌธ์ž ์ง‘ํ•ฉ๋“ค์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

     

    (์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ณ€ํ™˜ ํ˜•์‹(Unicode Transformation Format, UTF) ์ธ์ฝ”๋”ฉ๊ณผ ๊ตญ์ œ ๋ฌธ์ž ์„ธํŠธ(Universal Coded Character Set, UCS) ์ธ์ฝ”๋”ฉ์˜ ๋‘ ๊ฐ€์ง€ ๋งคํ•‘ ๋ฐฉ์‹์ด ์žˆ๋‹ค.)

     

    ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธ€์ž์™€ ์ฝ”๋“œ๊ฐ€ 1:1 ๋งคํ•‘๋˜๋Š” ๋ฌธ์ž ์ฝ”๋“œ, ์ฆ‰ ์ฝ”๋“œํ‘œ์ด๋‹ค.

    (์œ ๋‹ˆ์ฝ”๋“œ ์˜์—ญ - ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EC%98%81%EC%97%AD)

    (์œ ๋‹ˆ์ฝ”๋“œ - ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_0000~0FFF)

     

    ์ด๋ ‡๊ฒŒ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ •์˜๋œ ์ฝ”๋“œํ‘œ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋งŽ์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

    ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์€ UTF-8 ์ด๋‹ค.

     

    5.1 UTF-8

     

    : ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋กœ, Unicode Transformation Format - 8 bit ์˜ ์•ฝ์ž์ด๋‹ค.

    (Universal Coded Character Set + Transformation Format - 8 bit)

    namu.wiki/w/UTF-8

     

    '๊ฐ€๋ณ€' ์ด๋ผ๋Š” ๊ฒƒ์€, ์œ ๋‹ˆ์ฝ”๋“œ์— ๋”ฐ๋ผ ํ•œ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‹ค๋ฅด๋‹ค (1byte ~ 4byte) ๋Š” ๊ฒƒ์ด๋‹ค.

     

    ์ด๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    ๋จผ์ € 7 bit ์ด๋‚ด์˜ ์ฝ”๋“œ ๊ฐ’์—๋Š” ์•ž์— 0์„ ๋ถ™์ธ๋‹ค. (์•„์Šคํ‚ค ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” 0~127๋ฒˆ ๋ฌธ์ž๊นŒ์ง€)

    2 byte ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฒซ ๋ฐ”์ดํŠธ๋Š” 110์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๋‹ค์Œ ๋ฐ”์ดํŠธ๋Š” ์•ž๊ณผ ์ด์–ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” 10์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

    3 byte ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ™์€ ์›๋ฆฌ๋กœ, ์ฒซ ๋ฐ”์ดํŠธ๋Š” 1110์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋‚˜๋จธ์ง€ ๋‘ ๋ฐ”์ดํŠธ๋Š” 10 ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

     

    ์ฝ”๋“œ๊ฐ’ ์ž๋ฆฟ์ˆ˜ ๋ฒ”์œ„ ์ฒซ ๋ฒˆ์งธ byte ๋‘ ๋ฒˆ์งธ byte ์„ธ ๋ฒˆ์งธ byte ๋„ค ๋ฒˆ์งธ byte
    ~7 bit 0 ~ 0x7F 0xxxxxxx      
    ~ 11 bit 0x80 ~ 0x7FF 110xxxxx 10xxxxxx    
    ~ 16 bit 0x800 ~ 0xFFFF 1110xxxx 10xxxxxx 10xxxxxx  
    ~ 21 bit 0x10000 ~ 0x1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

    (x ์˜ ๊ฐœ์ˆ˜๋“ค์„ ์„ธ๋ณด๋ฉด ์ฝ”๋“œ๊ฐ’์˜ ์ž๋ฆฟ์ˆ˜์™€ ๋™์ผํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

    (ํ•œ๊ธ€ ์ž๋ชจ๋Š” U+1100..U+11FF ์ด๋ฏ€๋กœ 3 byte ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.)

     

    (๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด namu.wiki/w/UTF-8 ์˜ ์ธ์ฝ”๋”ฉ ๋ถ€๋ถ„ ์ฐธ๊ณ )

     

     

     

     

    ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋ณ€ํ™˜ํ•˜๊ณ  ์ธ์ฝ”๋”ฉํ•˜๋Š” ์œ ์šฉํ•œ ์‚ฌ์ดํŠธ ๋ช‡ ๊ฐœ๋ฅผ ๊ฑธ๊ณ  ๋๋‚ด๊ฒ ๋‹ค.

    hex, dec, bin converter : www.rapidtables.com/convert/number/hex-to-binary.html?x=1103

    string convrsion : coderstoolbox.net/string/#!encoding=base64&action=encode&charset=utf_8

    UTF-8 encoder/decoder : mothereff.in/utf-8

     

    ๋Œ“๊ธ€

Designed by Tistory.