사용 방법
- Base64 문자열을 입력란에 붙여넣습니다. ‘원본 형식’은 Base64, ‘대상 형식’은 16진수로 미리 선택되어 있습니다.
- 바이트마다 16진수 두 자리로 표시되는 결과를 확인합니다.
- 다른 형식이 필요하면 ‘대상 형식’을 Base58이나 Base32 등으로 바꾸고, 16진수를 다시 Base64로 변환하려면 ‘입력과 출력 바꾸기’를 누릅니다.
- 결과를 복사합니다.
같은 바이트를 표기하는 두 가지 방법
16진수와 Base64는 모두 바이너리 데이터를 텍스트로 표기하는 방식입니다. 16진수는 바이트마다 두 문자를 사용하므로 각 바이트 값을 읽고 비교하기 쉽습니다. Base64는 3바이트를 4문자에 담기 때문에 길이가 약 3분의 1 짧습니다. 둘 사이의 변환은 표기 방식만 바꿀 뿐 데이터 자체는 바뀌지 않습니다.
| 값 | 바이트 수 | 16진수 길이 | Base64 길이 |
|---|---|---|---|
| MD5 해시 | 16 | 32 | 24 |
| SHA-1 해시 | 20 | 40 | 28 |
| SHA-256 해시, Ed25519 공개 키 | 32 | 64 | 44 |
| SHA-384 해시 | 48 | 96 | 64 |
| SHA-512 해시, Ed25519 서명 | 64 | 128 | 88 |
16진수 편집기, 패킷 분석기, 디버거도 데이터를 16진수로 표시합니다. 따라서 Base64를 16진수로 바꾸면 이런 도구에 표시되는 내용과 나란히 대조할 수 있습니다.
Base64를 16진수로 바꿔야 하는 경우
- 해시 비교.
sha256sum같은 도구는 16진수로 출력하지만, 하위 리소스 무결성(SRI) 속성, 콘텐츠 보안 정책(CSP) 해시,Content-MD5같은 체크섬 헤더는 Base64를 사용합니다. 한쪽을 변환하면 둘을 바로 비교할 수 있습니다. - SSH 지문.
ssh-keygen -l은SHA256:지문을 패딩 없는 Base64로 출력하지만, SSHFP DNS 레코드는 같은 SHA-256 다이제스트를 16진수로 저장합니다.SHA256:뒤의 부분을 붙여넣으면 16진수 형식을 얻을 수 있습니다. - 키, IV, 서명. 암호화 코드를 디버깅할 때 바이트를 16진수로 보면 길이를 확인하고 값을 비교하며, 빠지거나 남는 바이트를 쉽게 찾을 수 있습니다.
변환기가 지원하는 입력
Base64 입력에 포함된 공백과 줄 바꿈은 무시되고, URL 안전 문자인 -와 _도 허용되며, = 패딩은 있어도 되고 없어도 됩니다. 따라서 JSON, JWT, 터미널 출력에서 복사한 값을 그대로 붙여넣을 수 있습니다. 변환은 디코딩된 바이트를 기준으로 이루어집니다. 즉 결과는 Base64 문자 자체가 아니라 데이터의 16진수입니다. 텍스트의 16진수 코드를 보려면 Base16 도구를 사용하십시오.
# 셸
printf '%s' "$B64" | base64 --decode | xxd -p
# Python
base64.b64decode(s).hex()
// Node.js
Buffer.from(s, 'base64').toString('hex')
자주 묻는 질문
Base64 텍스트 자체를 변환합니까, 아니면 Base64가 나타내는 바이트를 변환합니까?
16진수 출력이 Base64 입력보다 긴 이유는 무엇입니까?
16진수는 바이트당 2문자가 필요하지만 Base64는 약 1.33문자면 충분합니다. 32바이트 SHA-256 다이제스트는 Base64로는 44자, 16진수로는 64자입니다.
대문자 16진수나 콜론 구분자 형식은 어떻게 얻습니까?
JWT나 JSON Web Key의 Base64URL 값도 변환할 수 있습니까?
예. URL 안전 문자와 누락된 패딩을 자동으로 처리하므로 키 매개변수와 서명을 수정 없이 그대로 붙여넣으면 됩니다.