๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

โœ’๏ธ Cryptography/Dreamhack2

[Dreamhack] SingleByteXor ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด ๐Ÿž SingleByteXor ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด 1. ๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช… ์ˆ™์ง€ (๋ฌธ์ œ ํŒŒ์ผ์€ ๋ณ„๋„ ๋‹ค์šด๋กœ๋“œ ํ•„์š” X) ++ XOR(Exclusive OR) ์•”ํ˜ธ๋ž€? XOR(Exclusive OR) ์•”ํ˜ธ๋ฒ•์€ ๋‘ ๋น„ํŠธ๋‚˜ ๋ถˆ(Boolean) ๊ฐ’์ด ๋‹ค๋ฅผ ๋•Œ 1, ๊ฐ™์„ ๋•Œ 0์„ ๋ฐ˜ํ™˜ํ•˜๋Š” "๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ" ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์ด๋‹ค. XOR(Exclusive OR) ์—ฐ์‚ฐ์€ ๊ฐ ๋ฐ์ดํ„ฐ ๋น„ํŠธ์™€ ์•”ํ˜ธํ™” ํ‚ค ๋น„ํŠธ ๊ฐ„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๊ฐ ๋น„ํŠธ์— ๋Œ€ํ•ด ์•”ํ˜ธํ™” ํ‚ค์˜ ํ•ด๋‹น ๋น„ํŠธ์™€ XOR ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์•”ํ˜ธ๋ฌธ์ด ์ƒ์„ฑ๋œ๋‹ค. ๋ณตํ˜ธํ™”์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ํ‚ค๋ฅผ ํ†ตํ•ด ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 2. ๋ณตํ˜ธํ™”๋ฅผ ์œ„ํ•œ Python ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ hex_value = "54586b.. 2023. 8. 18.
[Dreamhack] Basic_Crypto1 ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด โค๏ธ Basic_Crypto1 ๋“œ๋ฆผํ•ต ์›Œ๊ฒŒ์ž„ ๋ฌธ์ œ ํ’€์ด 1. ๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ฝ์€ ํ›„ ๋ฌธ์ œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ++ Roman Emperor's Cipher (์‹œ์ € ์•”ํ˜ธ๋ž€?) ์‹œ์ € ์•”ํ˜ธ(Caesar cipher)๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋Œ€์น˜ ์•”ํ˜ธ(substitution cipher) ์ค‘ ํ•˜๋‚˜๋กœ, ๋กœ๋งˆ์˜ ํ™ฉ์ œ ์‹œ์ €๊ฐ€ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ์ „ํ•ด์ง€๋Š” ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์ด๋‹ค. ์‹œ์ € ์•”ํ˜ธ(Caesar cipher)๋Š” ๊ฐ ๊ธ€์ž๋ฅผ ์ผ์ •ํ•œ ๊ฑฐ๋ฆฌ๋งŒํผ ๋ฐ€์–ด์„œ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™” ๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๊ณต์‹์—์„œ n์€ ์•”ํ˜ธํ‚ค๋ฅผ, x ๋Š” ํ‰๋ฌธ ์•ŒํŒŒ๋ฒณ์˜ ์œ„์น˜(0 ~ 25)๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์•”ํ˜ธํ™” ๋ณตํ˜ธํ™” E(x) = (x + n) % 26 D(x) = (x - n + 26) % 26 2. ๋‹ค์šด๋ฐ›์€ encode.txt ํŒŒ์ผ ์˜คํ”ˆ --> .. 2023. 8. 16.