파일 업로드
  1. base64hub
  2. 키와 해시
  3. Base64 SHA-256 해시

SHA-256을 Base64로

텍스트를 입력하거나 파일을 놓으면 SHA-256 다이제스트를 Base64(44자), Base64URL, hex로 한꺼번에 보여 줍니다. 어느 형식이든 같은 32바이트이므로 시스템이 기대하는 형식을 고르세요.

무료 가입 없음, 제한 없음 로컬 업로드 없음 파일 200 MB 이상은 SHA-256 스트리밍 업데이트 2026. 10. 27.

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

SHA-256 해시를 Base64로 받는 방법

  1. 알고리즘에서 SHA-256이 선택되어 있습니다. 다른 버튼으로 MD5, SHA-1, SHA-384, SHA-512로 바꿀 수 있습니다.
  2. 입력이 텍스트인 상태에서 텍스트에 입력하거나 붙여넣으세요. 입력 형식은 그 텍스트를 어떻게 읽을지 정합니다. UTF-8 텍스트로 읽거나, 이미 인코딩된 바이너리 데이터를 해시하려면 hex 또는 Base64 바이트로 읽습니다.
  3. 결과를 Hex, Base64, Base64URL로 복사하세요. 모든 알고리즘에는 같은 입력의 다이제스트가 모두 나열됩니다.
  4. 파일을 해시하려면 입력을 파일로 바꾸고 하나 이상의 파일을 놓으세요. 파일마다 결과가 따로 나옵니다. 200 MB를 넘으면 SHA-256과 MD5는 진행률을 표시하며 8 MB 청크 단위로 계산하므로, 큰 파일도 한꺼번에 메모리에 올릴 필요가 없습니다.

해시는 입력하는 대로 갱신됩니다. 맨 위의 HMAC과 SRI를 누르면 키 기반 해시와 Subresource Integrity 태그로 전환됩니다.

해시 예시

입력SHA-256 (hex)SHA-256 (Base64)
빈 문자열e3b0c442…7852b85547DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
hello2cf24dba…938b9824LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
hello + 줄 바꿈5891b5b5…46f6be03WJG1tSLV3whtD/CxEPvZ0hu0/HFjrzTQgoai6Eb2vgM=
The quick brown fox jumps over the lazy dogd7a8fbb3…37c9e59216j7swfXgJRpypq8sAguT41WUeRtPNt2LQLQvzfJ5ZI=

두 번째와 세 번째 행이 대부분의 불일치 뒤에 있는 함정입니다. 보이지 않는 줄 바꿈 하나로 해시가 완전히 달라집니다. 브라우저 텍스트 상자에 붙여넣은 텍스트는 줄 끝도 LF로 바뀌므로, CRLF 줄 끝을 쓰는 파일은 내용을 붙여넣지 말고 파일 자체를 놓으세요.

Base64로 된 SHA-256이 쓰이는 곳

다이제스트는 전통적으로 hex로 출력하지만, 많은 형식이 더 짧은 Base64를 씁니다.

  • 인라인 스크립트용 Content Security Policy 해시: script-src 'sha256-…'.
  • Subresource Integrity: integrity="sha256-…". 다만 여기서는 SHA-384가 더 흔합니다.
  • HTTP Content-Digest (RFC 9530): 본문 {"hello": "world"}에 대해 Content-Digest: sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:. 콜론은 structured header에서 바이너리 값을 표시합니다.
  • 클라우드 스토리지 체크섬: 예를 들어 Amazon S3의 x-amz-checksum-sha256 헤더는 Base64 다이제스트를 담습니다.
  • 잠금 파일과 패키지 매니저: package-lock.json의 integrity 필드(보통 sha512-…)와 Nix의 SRI 형식 해시.

Docker와 OCI 이미지 다이제스트(sha256:…), Git은 hex를 씁니다. 시스템끼리 비교해야 할 때는 다시 해시하지 말고 Hex를 Base64로나 Base64를 Hex로로 변환하세요.

코드와 명령줄에서 SHA-256 Base64

printf 'hello' | openssl dgst -sha256 -binary | base64
sha256sum file.bin | cut -d' ' -f1 | xxd -r -p | base64

-binary가 없으면 OpenSSL은 hex 텍스트를 출력하고, 그 텍스트를 Base64로 바꾸면 의미 없는 88자가 됩니다.

import base64, hashlib

digest = hashlib.sha256(b"hello").digest()
print(base64.b64encode(digest).decode())

Node.js에서는 crypto.createHash("sha256").update("hello").digest("base64")가 같은 LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=를 반환하고, "base64url"은 URL-safe 형식을 줍니다. 일반 해시는 서명이 아닙니다. 누구나 다시 계산할 수 있습니다. 키를 가진 사람이 보낸 메시지임을 증명하려면 HMAC을 쓰세요. 더 많은 내용은 Python에서 Base64와 OpenSSL에 있습니다.

자주 묻는 질문

SHA-256 값이 명령줄에서 얻은 값과 다른 이유는 무엇인가요?

거의 항상 끝의 줄 바꿈 때문입니다. echo hello는 hello와 \n을 합친 6바이트를 출력하므로 hello의 해시와 다릅니다. 셸에서는 printf 'hello'나 echo -n hello를 쓰거나, 파일을 여기에 놓아 비교하세요.

SHA-256 해시는 Base64로 몇 자인가요?

44자이고 = 하나로 끝납니다. 패딩 없는 Base64URL이면 43자입니다. hex로는 64자입니다. 88자가 나왔다면 원시 다이제스트가 아니라 hex 텍스트를 Base64로 인코딩한 것입니다.

SHA-256 hex 문자열을 Base64로 바꿀 수 있나요?

네, 다이제스트 바이트는 같습니다. hex 64자를 Hex를 Base64로에 붙여넣거나, 셸에서 hex에 xxd -r -p를 실행하고 그 결과를 base64로 넘기세요.

SHA-256을 원래 텍스트로 디코딩할 수 있나요?

아니요. 해시는 단방향 지문이라 디코딩할 것이 없습니다. Base64를 디코딩해도 다이제스트 32바이트만 나옵니다. 인코딩과 무엇이 다른지는 Base64는 암호화가 아닙니다를 참고하세요.