파일 업로드
  1. base64hub
  2. 기타 진법
  3. Hex → Base64

해시와 키를 위한 Hex Base64 변환기

hex 바이트를 붙여넣으면 같은 바이트를 Base64로 받습니다. hex를 텍스트로 인코딩하지 않고 먼저 바이트로 디코딩하므로, 64자리 SHA-256 다이제스트는 Base64 44문자가 됩니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 44 SHA-256 다이제스트의 문자 수, 88이 아님 업데이트 2026. 10. 27.
입력 0바이트 0 B출력 0

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

hex를 Base64로 변환하는 방법

  1. 입력 · Hex에 hex를 붙여넣으세요. 공백, 줄 바꿈, 콜론, 하이픈, 0x나 \x 접두사는 건너뛰며 대소문자는 상관없습니다.
  2. 입력하는 동안 출력 · Base64에 Base64가 나타납니다.
  3. 받는 쪽이 패딩 없는 Base64를 원하면 출력 아래의 패딩 (=) 을 해제하고, 줄 바꿈한 출력이 필요하면 줄 바꿈을 64(PEM)나 76(MIME)으로 설정하세요.
  4. 출력 복사를 누르거나, Base64 → Hex 전환으로 반대 방향에서 결과를 확인하세요. Base64를 Hex로는 같은 도구를 반대로 쓰는 것입니다.

해시 다이제스트: hex와 Base64

해시 함수는 원시 바이트를 돌려줍니다. sha256sum이나 md5sum 같은 명령줄 도구는 이 바이트를 hex로 출력하지만, 많은 프로토콜은 같은 다이제스트를 Base64로 기대합니다. 다음은 5바이트 hello의 다이제스트입니다.

해시Hex (sha256sum 등의 출력)Base64
MD55d41402abc4b2a76b9719d911017c592XUFAKrxLKna5cZ2REBfFkg==
SHA-1aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434dqvTGHdzF6KLavt4PO0gs2a6pQ00=
SHA-2562cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=

Base64 형식이 필요한 곳은 다음과 같습니다.

  • Subresource Integrity. <script>나 <link> 태그의 integrity="sha384-…"에는 Base64 다이제스트가 들어갑니다. SRI 해시 생성기가 파일에서 속성 전체를 만들어 줍니다.
  • Content-MD5 헤더. RFC 1864는 이 값을 16바이트 MD5 다이제스트의 Base64로 정의하며, 이 헤더로 업로드를 검사하는 오브젝트 스토리지는 hex 형식을 거부합니다. MD5를 Base64로를 참고하세요.
  • API 요청의 서명과 HMAC은 대개 Base64로 보냅니다. HMAC Base64는 두 형식 모두로 계산합니다.
  • 키와 시크릿: openssl rand -hex 32가 출력한 32바이트 키는 많은 설정 파일이 기대하는 44문자 Base64 값이 됩니다.

직접 가진 텍스트나 파일의 SHA-256이라면 SHA-256 Base64가 hex 단계를 아예 건너뜁니다.

흔한 실수: hex 텍스트를 인코딩하기

echo -n 2cf24d…9824 | base64는 그럴듯하지만 틀린 결과를 냅니다. hex가 나타내는 32바이트 대신 hex의 ASCII 문자 64개를 인코딩해서, MmNmMjRk로 시작하는 88문자를 돌려줍니다. 이 값은 다시 hex 텍스트로 디코딩되기 때문에, 서명이나 무결성 검사가 실패할 때까지 아무 문제도 드러나지 않습니다. 먼저 hex를 디코딩하세요.

echo -n 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | xxd -r -p | base64
# LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=

printf hello | openssl dgst -sha256 -binary | base64
# same result, without going through hex at all

xxd -r -p는 일반 hex를 다시 바이트로 바꿉니다. Vim과 함께 설치되며, 최소 구성 시스템에서는 xxd 패키지를 설치하세요. OpenSSL에서는 -binary가 다이제스트를 hex가 아닌 바이트로 출력하게 합니다.

코드에서 hex를 Base64로

import base64
base64.b64encode(bytes.fromhex("5d41402abc4b2a76b9719d911017c592")).decode()
# 'XUFAKrxLKna5cZ2REBfFkg=='
Buffer.from("5d41402abc4b2a76b9719d911017c592", "hex").toString("base64");
// 'XUFAKrxLKna5cZ2REBfFkg=='

URL-safe와 패딩 없는 변형은 Python과 Node.js 페이지에서 다룹니다. 다이제스트를 URL이나 JWT에 넣는다면 결과를 Base64를 Base64URL로로 변환하세요.

변환이 실패할 때

  • “hex 자릿수가 홀수입니다”. 바이트마다 두 자리가 필요한데, 복사하다 한 자리가 빠졌습니다. 입력의 양 끝을 확인하세요.
  • “예상하지 못한 문자가 있습니다”. sha256: 라벨이나 sha256sum이 다이제스트 뒤에 출력하는 파일 이름처럼 hex가 아닌 것이 입력에 있습니다. 지우세요. 표시를 누르면 그 위치로 이동합니다.
  • hex 덤프의 오프셋. 00000010: 4865 6c6c에서 00000010은 데이터가 아니라 위치지만, 올바른 hex라서 함께 변환됩니다. 오프셋이 없는 xxd -p 출력을 쓰세요.

자주 묻는 질문

SHA-256 hex 해시를 Base64로 바꾸려면 어떻게 하나요?

hex 64자리를 입력란에 붙여넣으세요. 결과는 =로 끝나는 44문자입니다. 예를 들어 2cf24dba…9824는 LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=가 됩니다. 명령줄에서는 echo -n HEX | xxd -r -p | base64입니다.

Base64가 예상보다 두 배 긴 이유는 무엇인가요?

hex 문자열을 텍스트로 인코딩해서 hex 한 자리가 한 바이트가 되었습니다. SHA-256 다이제스트를 이렇게 인코딩하면 44문자가 아니라 88문자가 나옵니다. 먼저 hex를 바이트로 디코딩하세요. 이 변환기가 하는 일이 바로 그것입니다.

hex 문자열은 Base64 몇 문자가 되나요?

hex 두 자리가 1바이트이고, 3바이트마다 Base64 4문자가 되며 4의 배수로 올림됩니다. hex 32자리(MD5)는 24문자, 40자리(SHA-1)는 28문자, 64자리(SHA-256)는 44문자, 128자리(SHA-512)는 88문자가 됩니다.

UUID를 Base64로 바꿀 수 있나요?

네, 하이픈째 붙여넣으세요. 123e4567-e89b-12d3-a456-426614174000의 16바이트는 Ej5FZ+ibEtOkVkJmFBdAAA==가 되어 36문자가 24문자로 줄어듭니다.