Base58 ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ
100% ํด๋ผ์ด์ธํธ ์ธก ์ฒ๋ฆฌ (์๋ฒ ์ ๋ก๋ ์์). ํ ์คํธ๋ฅผ ๋ถ์ฌ๋ฃ๊ณ , Base58 ์ํ๋ฒณ (๋นํธ์ฝ์ธ, ํ๋ฆฌ์ปค ๋๋ ๋ฆฌํ/XRP)๊ณผ ๋ฌธ์ ์งํฉ์ ์ ํํ ๋ค์ "์ธ์ฝ๋ฉ"์ ํด๋ฆญํ์ฌ ๋ณต์ฌํ๊ฑฐ๋ ๋ค์ด๋ก๋ํ ์ ์๋ Base58 ์ถ๋ ฅ์ ์์ฑํ์ธ์. ๋ฐ๋ ๋ฐฉํฅ์ด ํ์ํ์ ๊ฐ์? ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ธ์.
๊ธฐ๋ฅ
- ๋ธ๋ผ์ฐ์ ์์ ์ง์ ํ ์คํธ๋ฅผ Base58 ์ถ๋ ฅ์ผ๋ก ์ธ์ฝ๋ฉ
- ์ํ๋ฒณ ์ ํ: ๋นํธ์ฝ์ธ (๊ธฐ๋ณธ๊ฐ), ํ๋ฆฌ์ปค ๋๋ ๋ฆฌํ/XRP
- ๋ฌธ์ ์งํฉ ์ ํ (ํ ์คํธ โ ๋ฐ์ดํธ), ์ง์๋์ง ์์ ๊ฒฝ์ฐ UTF-8๋ก ์์ ํ๊ฒ ๋์ฒด
- ์์ ์ ๋ ฅ์ ๋ํ ๋น ๋ฅธ ๋ฐ๋ณต์ ์ํ ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ๊ฐ๋ ์ฑ ์๋ Base58 ๋ธ๋ก์ ์ํ ์ ํ์ ์ค ๋ฐ๊ฟ (0โ120)
- ๋ค์ํ ํ๊ฒฝ์ ๋ณต์ฌํ๊ธฐ ์ํ ์ผ๊ด๋ ์ถ๋ ฅ ์ค ๋ (LF ๋๋ CRLF)
- 100% ํด๋ผ์ด์ธํธ ์ธก ์ฒ๋ฆฌ (์๋ฒ ์ ๋ก๋ ์์).
์ฌ์ฉ ๋ฐฉ๋ฒ for base58-encoder
ํ ์คํธ ๋ถ์ฌ๋ฃ๊ธฐ
์ผ๋ฐ ํ ์คํธ๋ฅผ ์ ๋ ฅ ํธ์ง๊ธฐ์ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ ๋ ฅํ์ธ์ (๋๋ ํ ์คํธ ํ์ผ์ ๋๋กญํ์ธ์). ๋น ASCII ์ฝํ ์ธ ์ ๊ฒฝ์ฐ ๋ฐ์ดํธ๊ฐ ์ผ๊ด๋๊ฒ ์์ฑ๋๋๋ก ์ฌ๋ฐ๋ฅธ "๋ฌธ์ ์งํฉ"์ ์ ํํ ์ํ๋ก ์ ์งํ์ธ์.
"์ธ์ฝ๋ฉ" ํด๋ฆญ
"์์ "์ด "์ธ์ฝ๋ฉ"์ผ๋ก ์ค์ ๋์ด ์๋์ง ํ์ธํ๊ณ , "์ํ๋ฒณ" (๋นํธ์ฝ์ธ/ํ๋ฆฌ์ปค/๋ฆฌํ)์ ์ ํํ ๋ค์, ํ์ํ ๊ฒฝ์ฐ ์ค ๋ฐ๊ฟ ๊ธธ์ด์ ๊ฐ์ ์์ ์ต์ ์ ์กฐ์ ํ๊ณ "์ธ์ฝ๋ฉ"์ ํด๋ฆญํ์ธ์.
๋ณต์ฌ/๋ค์ด๋ก๋
๊ฒฐ๊ณผ ํธ์ง๊ธฐ์์ Base58 ์ถ๋ ฅ์ ๋ณต์ฌํ๊ฑฐ๋, ํ์ผ ์ํฌํ๋ก์ฐ์์ ์์ํ ๊ฒฝ์ฐ ๋๊ตฌ UI์์ ๋ค์ด๋ก๋ํ์ธ์.
๊ธฐ์ ์ฌ์
์คํ ๋ชจ๋ธ
์ด Base58 ์ธ์ฝ๋ฉ ํ์ด์ง์ ๋ฐํ์ ๊ณต๊ฐ ๋ฐ ์ ์ฝ ์กฐ๊ฑด.
| ์ธก๋ฉด | ์์ธ ๋ด์ฉ |
|---|---|
| ์คํ | 100% ํด๋ผ์ด์ธํธ ์ธก ์ฒ๋ฆฌ (์๋ฒ ์ ๋ก๋ ์์). |
| ์์ ๋ฒ์ | ํ ์คํธ โ Base58 ์ธ์ฝ๋ฉ (์ด ํ์ด์ง). ๋ฐ๋ ๋ฐฉํฅ์ด ํ์ํ์ ๊ฐ์? ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์ฌ์ฉํ์ธ์. |
| ์ ๋ ฅ | ํ ์คํธ ์ ๋ ฅ (ํธ์ง๊ธฐ ๋๋ ๋๋กญ์กด); ์ ํ์ ์ค ๋จ์ ์ธ์ฝ๋ฉ |
| ์ํ๋ฒณ | ๋นํธ์ฝ์ธ (๊ธฐ๋ณธ๊ฐ), Flickr, Ripple / XRP |
| ํ ์คํธ ์ธ์ฝ๋ฉ | ์ ๋ ฅ ํ ์คํธ๋ "๋ฌธ์ ์งํฉ"์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํธ๋ก ๋ณํ๋ฉ๋๋ค (์ง์๋์ง ์๋ ์ ํ์ UTF-8๋ก ๋์ฒด๋จ) |
| ์ถ๋ ฅ ํ์ | ์ ํ์ ์ค ๋ฐ๊ฟ ๊ธธ์ด (0โ120), ์ ํ์ ์ต์ข ์ค ๋ฐ๊ฟ, LF/CRLF ์ค ๊ตฌ๋ถ์ |
| ์ ํ | ์ฝ 1โ2MB ๋ฌธ์; ์ฝ 25000ms ํ์์์ |
| ๋ณด์กด | ๋ชจ๋ ์ฒ๋ฆฌ๋ ๊ทํ์ ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ๋ก ์ด๋ฃจ์ด์ง๋๋ค (์ ๋ก๋ ์์) |
๊ฐ๋จํ ์์
๋ด์ฅ ์ํ์ ์ฌ์ฉํ ์์ ์์์ ๋๋ค (์ํ๋ฒณ ์ ํ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ณ๊ฒฝ๋จ).
| ํ๋ | ๊ฐ |
|---|---|
| ์ ๋ ฅ (ํ ์คํธ) | Hello |
| ์์ | ์ธ์ฝ๋ฉ |
| ์ํ๋ฒณ | ๋นํธ์ฝ์ธ (๊ธฐ๋ณธ๊ฐ) |
| ์ถ๋ ฅ (Base58) | 9Ajdvzr |
์ค๋ฅ ๋ฐ ์์ธ ์ํฉ
Base58 ์ธ์ฝ๋ฉ์ด ์์๊ณผ ๋ค๋ฅด๊ฒ ๋์ํ ๋ ํํ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๊ณผ ํ์ธํ ์ฌํญ์ ๋๋ค.
| ์ฆ์ | ๊ฐ๋ฅํ ์์ธ | ํ์ธํ ์ฌํญ |
|---|---|---|
| ์ ๋ ฅ์ด ๋๋ฌด ํผ (์ต๋ 2MB) | ํ ์คํธ๊ฐ ๋๊ตฌ์ ํฌ๊ธฐ ์ ํ์ ์ด๊ณผํจ | ์ ๋ ฅ์ ๋ถํ ํ๊ฑฐ๋, "์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ"๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋, ๋์ฉ๋ ํ์ด๋ก๋์ ๊ฒฝ์ฐ ๋ก์ปฌ ์ธ์ฝ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค |
| ๋ค๋ฅธ ๋๊ตฌ์ ์ถ๋ ฅ์ด ๋ค๋ฆ | ๋ค๋ฅธ Base58 ์ํ๋ฒณ์ด ์ ํ๋จ | "์ํ๋ฒณ" ํ์ธ (๋นํธ์ฝ์ธ vs Flickr vs Ripple/XRP) |
| ๋น ASCII ๋ฌธ์๊ฐ ๋ค๋ฅด๊ฒ ์ธ์ฝ๋ฉ๋จ | ๋ค๋ฅธ ํ ์คํธ-ํฌ-๋ฐ์ดํธ ์ธ์ฝ๋ฉ์ด ์ฌ์ฉ๋จ | "๋ฌธ์ ์งํฉ" ์ผ์น ํ์ธ (์ง์๋์ง ์๋ ๊ฐ์ UTF-8๋ก ๋์ฒด๋จ) |
| ์ถ๋ ฅ์ ์์์น ๋ชปํ ์ค ๋ฐ๊ฟ ๋ฐ์ | ์ค ๋ฐ๊ฟ ๋๋ ์ต์ข ์ค ๋ฐ๊ฟ์ด ํ์ฑํ๋จ | "์ค ๋ฐ๊ฟ ์์น"๋ฅผ 0์ผ๋ก ์ค์ ํ๊ณ /ํ๊ฑฐ๋ "์ต์ข ์ค ๋ฐ๊ฟ ์ฝ์ "์ ์ ํํ์ญ์์ค |
| ๋๋ฆฐ ์ ๋ ฅ / ๋น๋ฒํ ์ฌ๊ณ์ฐ | ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๋ชจ๋ ํธ์ง ์ ์ฌ๊ณ์ฐ๋จ | ํฐ ์ ๋ ฅ๊ฐ์ ๋ํด์๋ "์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ"๋ฅผ ๋นํ์ฑํํ๊ณ ํ์ ์ "์ธ์ฝ๋ฉ"์ ํด๋ฆญํ์ธ์ |
๋ช ๋ น์ค ๋์
์๋ํ, CI ๋๋ ๋ฏผ๊ฐํ ์ฝํ ์ธ ์ ๊ฒฝ์ฐ ๋ก์ปฌ ์คํ์ ๊ถ์ฅํฉ๋๋ค. Base58์ POSIX coreutils์ ์ผ๋ถ๊ฐ ์๋๋ฏ๋ก ์คํฌ๋ฆฝํ ์ธ์ด๊ฐ ๊ฐ์ฅ ํ์ค์ ์ธ ์ต์ ์ ๋๋ค.
Node.js (๋ชจ๋ ํ๋ซํผ)
์ผ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Base58(๋นํธ์ฝ์ธ ์ํ๋ฒณ)๋ก ์ธ์ฝ๋ฉ
node -e "const bs58=require('bs58'); const input=Buffer.from('Hello','utf8'); console.log(bs58.encode(input));"๋๋ฆฌ ์ฌ์ฉ๋๋ Base58 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ UTF-8 ๋ฐ์ดํธ๋ฅผ Base58๋ก ์ธ์ฝ๋ฉํฉ๋๋ค. ๋์ ์ํ๊ณ์ ๋์ผํ ์ํ๋ฒณ/๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์์ ํ์ธํ์ธ์.
Python (๋ชจ๋ ํ๋ซํผ)
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Base58(๋นํธ์ฝ์ธ ์ํ๋ฒณ)๋ก ์ธ์ฝ๋ฉ
python -c "import base58; print(base58.b58encode(b'Hello').decode())"๋ฐ์ดํธ๋ฅผ Base58๋ก ์ธ์ฝ๋ฉํฉ๋๋ค. ํ ์คํธ ์ ๋ ฅ์ ๊ฒฝ์ฐ ์๋ํ ๋ฌธ์ ์งํฉ(์: UTF-8)๊ณผ ์ผ์นํ๋ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ธ์.
์ฌ์ฉ ์ฌ๋ก
๋ชจํธํ ๋ฌธ์ ์์ด ๊ฐ๊ฒฐํ ์๋ณ์ ๊ณต์
- 0/O ๋ฐ I/l๊ณผ ๊ฐ์ ์ ์ฌ ๋ฌธ์๋ฅผ ํผํ๋ Base58 ๋ฌธ์์ด ์์ฑ
- ํ ์คํธ ์ ๋ ฅ์์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ์ฉ์ดํ ํ ํฐ ์์ฑ
ํน์ ์ํ๊ณ์ ํธํ๋๋ Base58 ๋ฌธ์์ด ์์ฑ
- ๋นํธ์ฝ์ธ vs Flickr vs Ripple ์ํ๋ฒณ์ ๊ธฐ๋ํ๋ ํํธ๋ ์์คํ ๊ณผ ์ผ์น
- ์ผ๊ด๋ ํ ์ถ๋ ฅ์ ์ํ ์ํ๋ฒณ + ๋ฌธ์ ์งํฉ ์ค์ ํ์คํ
๋ธ๋ผ์ฐ์ ์์ ์์ ํ์ด๋ก๋์ ๋ํ ์ฑ๋ฅ ์นํ์ ์ธ์ฝ๋ฉ
- ์งง์ ๋ฌธ์์ด์ ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ๋ฐ๋ณต
- ์ฌ๊ณ์ฐ์ ์ค์ด๊ธฐ ์ํด ํฐ ์ ๋ ฅ๊ฐ์ ๋ํด ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋นํ์ฑํ
CI ํ ์คํธ ๋ฒกํฐ ๋ฐ ์ฌํ์ฑ ๊ฒ์ฌ
- ์ํ๋ฒณ + ๋ฌธ์ ์งํฉ ๊ณ ์ ์ผ๋ก ๊ฒฐ์ ๋ก ์ Base58 ์ถ๋ ฅ ์์ฑ
- ๋ธ๋ผ์ฐ์ ์ถ๋ ฅ๊ณผ ๋ก์ปฌ Node/Python ์ฐธ์กฐ ์คํฌ๋ฆฝํธ ๋น๊ต
์ธ์ฝ๋ฉ ๊ธฐ๋ณธ ์ฌํญ ๊ต์ก
- ์ํ๋ฒณ ์ ํ์ด ์ธ์ฝ๋ฉ๋ ์ถ๋ ฅ์ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ๋์ง ๋ณด์ฌ์ฃผ๊ธฐ
- ์ผ๊ด๋ ํ ์คํธ ์ธ์ฝ๋ฉ(๋ฌธ์ ์งํฉ)์ ์ค์์ฑ ์์ฐ
โ Frequently Asked Questions
์ด Base58 ์ธ์ฝ๋์ ๊ณต๊ฐ API๊ฐ ์๋์?
API ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.์ฒ๋ฆฌ๋ ๋ก์ปฌ์ธ๊ฐ์ ์๊ฒฉ์ธ๊ฐ์? ์ ํ ์คํธ๋ฅผ ์ ๋ก๋ํ๋์?
๋น๋ฐ ์ ๋ณด(API ํค, ๋น๋ฐ๋ฒํธ)๋ฅผ ์ฌ๊ธฐ์ ์ธ์ฝ๋ฉํด์ผ ํ ๊น์?
์ Base58 ์ถ๋ ฅ์ด ๋ค๋ฅธ ์น์ฌ์ดํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ์นํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
Pro Tips
๋จผ์ ์ํ๋ฒณ(๋นํธ์ฝ์ธ/Flickr/Ripple)์ ์ ํํ๊ณ ํ๋ก์ ํธ ์ ์ฒด์์ ์ผ๊ด๋๊ฒ ์ ์งํ์ฌ ๋๋ฒ๊น ํ๊ธฐ ์ด๋ ค์ด ๋ถ์ผ์น๋ฅผ ํผํ์ธ์.
ํ๋ซํผ ๊ฐ ์ฌํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ๊ฒฝ์ฐ "์ํ๋ฒณ"๊ณผ "๋ฌธ์ ์งํฉ"์ ๋ชจ๋ ํ์คํํ์ธ์ (UTF-8์ด ๊ฐ์ฅ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค).
๋์ฉ๋ ์ ๋ ฅ์ ๊ฒฝ์ฐ "์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ"๋ฅผ ๋นํ์ฑํํ๊ณ ์ ๋ ฅ ์ค์ ๋ฐ๋ณต ์์ ์ ํผํ๊ธฐ ์ํด ํ์ํ ๋ ์ธ์ฝ๋ฉํ์ธ์.
๊ณ ์ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋๊ตฌ์ ์์กดํ์ง ๋ง์ธ์. ๋น๋ฐ์ด ๋ธ๋ผ์ฐ์ ์ธ์ ์ ๋ค์ด๊ฐ์ง ์๋๋ก ๋ก์ปฌ ์คํฌ๋ฆฝํธ(Node/Python)๋ฅผ ์คํํ์ธ์.
์ค ๋์ ๋ฏผ๊ฐํ ์์คํ ์์ ์ธ์ฝ๋ฉ๋ ์ถ๋ ฅ์ ๊ณต์ ํ ๋, ํ๊ฒฝ๊ณผ ์ผ์นํ๋๋ก "์ค ๊ตฌ๋ถ์"(LF vs CRLF)๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ์ธ์.
Additional Resources
Other Tools
- CSS ์ ๋ฆฌ ๋๊ตฌ
- HTML ์ ๋ฆฌ ๋๊ตฌ
- ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ฆฌ ๋๊ตฌ
- PHP ์ ๋ฆฌ ๋๊ตฌ
- ์์ ์ ํ๊ธฐ
- ์คํ๋ผ์ดํธ ์ถ์ถ๊ธฐ
- Base32 ์ด์ง ์ธ์ฝ๋
- Base32 ๋์ฝ๋
- Base32 ์ธ์ฝ๋
- Base58 ์ด์ง ์ธ์ฝ๋
- Base58 ๋์ฝ๋
- Base62 ์ด์ง ์ธ์ฝ๋
- Base62 ๋์ฝ๋
- Base62 ์ธ์ฝ๋
- Base64 ์ด์ง ์ธ์ฝ๋
- Base64 ๋์ฝ๋
- Base64 ์ธ์ฝ๋
- 16์ง์ ์ด์ง ์ธ์ฝ๋
- 16์ง์ ๋์ฝ๋
- 16์ง์ ์ธ์ฝ๋
- C# ํฌ๋งทํฐ
- CSV ํฌ๋งทํฐ
- Dockerfile Formatter
- Elm ํฌ๋งทํฐ
- ENV ํฌ๋งทํฐ
- Go ํฌ๋งทํฐ
- GraphQL ํฌ๋งทํฐ
- HCL ํฌ๋งทํฐ
- INI ํฌ๋งทํฐ
- JSON ํฌ๋งทํฐ
- LaTeX ํฌ๋งทํฐ
- ๋งํฌ๋ค์ด ํฌ๋งทํฐ
- Objective-C ํฌ๋งทํฐ
- Php Formatter
- ํ๋กํ ์ฝ ๋ฒํผ ํฌ๋งทํฐ
- Python ํฌ๋งทํฐ
- Ruby ํฌ๋งทํฐ
- Rust ํฌ๋งทํฐ
- Scala ํฌ๋งทํฐ
- ์ ธ ์คํฌ๋ฆฝํธ ํฌ๋งทํฐ
- SQL ํฌ๋งทํฐ
- SVG ํฌ๋งทํฐ
- Swift ํฌ๋งทํฐ
- TOML ํฌ๋งทํฐ
- Typescript Formatter
- XML ํฌ๋งทํฐ
- YAML ํฌ๋งทํฐ
- Yarn ํฌ๋งทํฐ
- CSS ์์ถ๊ธฐ
- Html Minifier
- Javascript Minifier
- JSON ์์ถ๊ธฐ
- XML ์ต์ํ ๋๊ตฌ
- HTTP ํค๋ ๋ทฐ์ด
- PDF ํ ์คํธ ๋ณํ
- ์ ๊ท์ ํ ์คํฐ
- ๊ฒ์ ์์ ํ์ธ๊ธฐ
- Whois ์กฐํ