Punycode 변환기
국제화 도메인을 Unicode(münchen.de)와 Punycode ASCII(xn--mnchen-3ya.de) 간 변환.
ASCII (Punycode)
xn--mnchen-3ya.de
Unicode
münchen.de
Punycode는 라벨별(점 사이 부분) 작동. 이미 ASCII인 라벨은 그대로 통과.
사용법
- Unicode 또는 Punycode로 도메인 입력/붙여넣기.
- ASCII·Unicode 등가 표현 나란히 확인.
- 도구/등록기관이 필요로 하는 형식 복사.
자세한 설명
펼치기접기
국제화 도메인 이름(IDN)은 통신 상에서 퓨니코드(RFC 3492)를 써서 ASCII로 저장되지만 사람은 보통 유니코드로 씁니다. 이 툴은 라벨 단위로 양방향 변환을 합니다. 이미 ASCII인 라벨은 그대로 통과하고, 유니코드 라벨은 xn--…가 되며, xn--… 라벨은 유니코드가 됩니다. 피싱이 의심되는 도메인을 확인하거나, IDN을 등록하거나, ASCII만 받는 도구에 비ASCII 도메인을 넣을 때 씁니다.
변환은 라벨 단위, 즉 점으로 구분된 구간마다 이루어집니다. DNS가 그렇게 저장하기 때문입니다. 이름은 자유롭게 섞일 수 있어서 日本.example.com은 첫 라벨만 인코딩하고 나머지는 그대로 둡니다. xn-- 접두사는 그 라벨이 인코딩되었음을 표시하며, 그 글자로 시작하기만 하고 유효한 퓨니코드가 아닌 라벨은 이름이 아니라 디코딩 오류입니다.
의심스러운 도메인을 여기서 확인하는 이유는 실제로 해석되는 것이 ASCII 형태이고, 그것만이 여러분에게 거짓말을 할 수 없는 형태이기 때문입니다. 여러 키릴 문자와 그리스 문자가 라틴 문자와 겉모습이 똑같아서, 익숙한 상표처럼 읽히는 도메인이 전혀 다른 이름일 수 있습니다. xn--로 디코딩해 보면 눈이 하나로 본 것이 서로 다른 두 문자열로 드러납니다. 브라우저는 라벨이 여러 문자 체계를 섞을 때 퓨니코드 형태를 보여 주는 식으로 방어하지만, 규칙이 브라우저마다 다르고 단일 문자 체계로 만든 동형이의어는 빠져나갈 수 있습니다.
인코딩이 IDN 등록의 전부는 아닙니다. 퓨니코드는 전송 형식이고, 그 이전에 이름은 IDNA 2008으로 정규화되고 걸러지는데, 이 과정에서 어떤 문자는 아예 거부되고 어떤 문자는 다른 것으로 접힙니다. 이 툴이 무리 없이 인코딩한 문자열도 등록 기관에서는 거절될 수 있으며, 애초에 유효한 도메인이 아니었던 입력에 대해서는 양방향이 완벽하게 대칭이지도 않습니다.
라벨은 인코딩 후 63바이트로 제한되므로, 보이는 이름이 짧아도 비ASCII 문자 몇 개만으로 한도를 넘길 수 있습니다.
자주 묻는 질문
왜 같아 보이는 글자가 다르게 인코딩?
그게 Punycode 핵심 — 동음이의 피싱의 본질. 라틴 a(U+0061)와 키릴 а(U+0430)는 동일해 보이지만 다른 ASCII로 인코딩. 의심 도메인을 이 도구에 붙여넣으면 xn--… 형식이 차이를 드러냄.
도메인 검증?
아니요 — Punycode 변환만. 길이 제한·금지 코드 포인트에 대한 IDNA2008 규칙·TLD 정책 미검증. 변환된 이름은 여전히 등록기관에서 거부될 수 있음.
라벨 하나가 그대로인 이유?
Punycode은 비 ASCII 문자 포함 라벨에만 적용. mail.münchen.de는 mail.xn--mnchen-3ya.de — 두 번째 라벨만 인코딩 필요.
양방향 무손실?
예 — Punycode는 일대일 인코딩. 인코딩 후 디코딩하면 항상 원본(Unicode 정규화 후) 복원. 왕복이 다르면 입력에 혼합 스크립트나 다르게 해석된 시각적 유사 문자 있음.
관련 도구
유니코드 이스케이프 변환기
텍스트를 \uXXXX, U+XXXX, HTML 엔티티로 인코딩하고, 그 어떤 형식이든 다시 텍스트로 디코딩합니다. 이모지·확장 문자도 처리합니다.
개발
Base45 인코더 및 디코더
RFC 9285에 따라 텍스트를 Base45로 인코딩하고 Base45를 다시 텍스트로 디코딩합니다. 브라우저에서 동작합니다.
개발
보이지 않는 / 제로폭 문자 탐지기
붙여넣은 텍스트의 NBSP·제로폭·양방향 마크·탭을 찾아내고 한 번에 정리.
개발
Quoted-Printable 인코더 & 디코더
텍스트를 MIME Quoted-Printable(RFC 2045)로 인코딩하거나 다시 디코딩 — =XX 이스케이프·소프트 줄바꿈·UTF-8 처리, 인코딩 시 76자 줄바꿈 — 브라우저에서.
개발
Base32 인코더 / 디코더
Base32(RFC 4648) 인코딩·디코딩 — Standard와 base32hex 변형 지원. TOTP secret이나 Crockford 스타일 ID에 유용.
개발
JWK ↔ PEM 변환기
JWK이나 JWKS 전체를 PEM 공개키로, 또는 그 반대로 변환하고 각 키의 RFC 7638 thumbprint까지 브라우저에서 계산합니다.
개발