파일 업로드
  1. base64hub
  2. 웹·토큰 도구
  3. Basic Auth 디코더

Basic Auth 디코더

Authorization: Basic … 헤더나 토큰만, 또는 user:pass@가 들어간 URL을 붙여넣으세요. 도구가 사용자 이름과 비밀번호를 분리하고, 바이트가 어떤 문자 인코딩이었는지 보여 줍니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 자동 UTF-8 또는 Latin-1 감지 업데이트 2026. 10. 27.

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

Basic 인증 헤더를 디코딩하는 방법

  1. Authorization 헤더, Basic 토큰 또는 자격 증명이 포함된 URL에 값을 붙여넣으세요. 다음 형태가 모두 됩니다.
    • Authorization: Basic YWRtaW46czNjcjN0OnBhc3M=
    • Proxy-Authorization: Basic …
    • Basic YWRtaW46czNjcjN0OnBhc3M= 또는 토큰만
    • https://user:password@host/path
  2. 문자 인코딩은 자동 감지로 두거나, 결과가 이상하면 UTF-8이나 ISO-8859-1로 고정하세요.
  3. 사용자 이름과 비밀번호를 읽고 필요한 쪽을 복사하세요. 의심스러운 문자가 있으면 디코딩된 바이트 (hex) 항목을 확인하세요.

Basic 스킴만 디코딩합니다. Digest와 NTLM 헤더는 형식이 달라서 다른 스킴이라고 표시됩니다.

디코더가 보여 주는 것

입력사용자 이름비밀번호참고
Basic YWRtaW46czNjcjN0OnBhc3M=admins3cr3t:pass첫 번째 콜론에서만 나누므로 비밀번호의 콜론은 유지됩니다.
dGVzdDoxMjOjtest123£올바른 UTF-8이 아니므로 자동 감지가 Latin-1로 대체합니다.
dGVzdDoxMjPCow==test123£같은 텍스트의 UTF-8 바이트입니다.
https://ci-bot:p%40ss@ci.example.com/ci-botp@ssURL에서 가져와 퍼센트 디코딩합니다.
Bearer eyJhbGciOi…오류: Bearer 토큰이며 JWT 디코더로 가는 링크가 나옵니다.

자동 감지는 순서대로 판단합니다. 순수 ASCII는 어떤 문자 인코딩에서든 똑같이 디코딩되고, 올바른 UTF-8을 이루는 바이트는 UTF-8로 읽으며, 그 밖의 바이트는 HTTP 헤더의 옛 기본값인 ISO-8859-1로 읽습니다. 여기서 Latin-1은 진짜 ISO-8859-1을 뜻합니다. Windows-1252는 € 같은 문자가 있는 0x80–0x9F 범위에서 ISO-8859-1과 다르므로, Windows-1252 비밀번호는 제어 문자로 나타날 수 있습니다.

디코더는 = 패딩이 빠졌거나 URL-safe -와 _가 쓰인 엉성한 토큰도 관대하게 받아 주지만, 엄격한 서버는 이를 거부하므로 그 사실을 알려 줍니다. 디코딩한 텍스트에 콜론이 하나도 없으면 그 값은 user:password 쌍이 아니며, 도구는 그렇게 알려 줍니다.

Basic 자격 증명을 만나는 곳

  • 브라우저 개발자 도구. 네트워크 탭에 모든 요청의 헤더가 Authorization까지 포함해 표시됩니다.
  • curl. curl -v는 요청을 출력하므로 -u user:pass가 > Authorization: Basic …으로 나타납니다.
  • HAR 파일과 프록시 캡처: 각 요청의 전체 헤더를 저장합니다.
  • 서버와 프록시 설정: 하드코딩된 헤더로 백엔드에 접근합니다. 예를 들어 nginx의 proxy_set_header Authorization "Basic …"입니다.
  • Docker 레지스트리 자격 증명. ~/.docker/config.json의 auth 필드는 user:password의 Base64입니다. dockerconfigjson 디코더가 파일 전체를 열어 줍니다.
  • 애플리케이션 로그: 프레임워크가 들어오는 헤더를 가리지 않고 기록할 때입니다.

모두 인코딩 한 겹만 씌운 평문 비밀번호이므로 비밀번호 그 자체처럼 다루세요. 인코딩이 아무것도 보호하지 않는 이유는 Base64는 암호화가 아닙니다에서 설명합니다.

서버에서 헤더 디코딩하기

보통은 프레임워크가 처리해 주지만, 스크립트와 테스트에서는 작은 파서가 쓸모 있습니다.

import base64

def parse_basic(header_value):
    scheme, _, token = header_value.strip().partition(" ")
    if scheme.lower() != "basic":
        raise ValueError("not a Basic credential")
    user, colon, password = base64.b64decode(token).decode("utf-8").partition(":")
    if not colon:
        raise ValueError("no colon in the decoded value")
    return user, password

print(parse_basic("Basic YWRtaW46czNjcjN0OnBhc3M="))

('admin', 's3cr3t:pass')가 출력됩니다. 스킴 이름은 대소문자를 구분하지 않으므로 소문자로 바꿔 비교하고, 비밀번호 안의 콜론이 살아남도록 항상 partition이나 split(":", 1)을 쓰세요. 비밀번호는 == 대신 인코딩된 바이트에 hmac.compare_digest를 쓰는 식으로 상수 시간 비교를 하세요. 반대 방향은 Basic Auth 헤더 생성기를 사용하고, 더 많은 Base64 예시는 Python 페이지에 있습니다.

자주 묻는 질문

Basic 인증 토큰을 손으로 디코딩하려면 어떻게 하나요?

Basic이라는 단어와 공백을 지우고 나머지를 Base64 디코딩한 뒤 첫 번째 콜론에서 나누세요. Linux나 macOS에서는 echo 'YWRtaW46czNjcjN0OnBhc3M=' | base64 -d가 admin:s3cr3t:pass를 출력합니다.

"Bearer 토큰입니다"라는 메시지는 무슨 뜻인가요?

헤더가 Bearer 스킴을 쓰므로 사용자 이름과 비밀번호 대신 토큰을 담고 있다는 뜻입니다. Bearer 토큰은 대개 JWT이므로 JWT 디코더에서 여세요.

디코딩한 비밀번호에 이상한 기호가 들어 있는 이유는 무엇인가요?

바이트를 쓸 때와 읽을 때의 문자 인코딩이 달랐을 가능성이 높습니다. 문자 인코딩을 자동 감지, UTF-8, ISO-8859-1 사이에서 바꿔 보고 hex 바이트를 확인하세요. UTF-8에서 £는 C2 A3이고, Latin-1에서는 A3 하나입니다.

로그에서 Basic 인증 헤더를 발견했습니다. 어떻게 해야 하나요?

비밀번호가 유출되었다고 보고 교체하세요. 그런 다음 유출 경로를 막으세요. 프록시, 웹 서버, 로깅 라이브러리가 Authorization 헤더를 가리도록 설정하면 됩니다.