Skip to content

SHA-256 해시 생성기 및 체크섬 도구

SHA-256 해시를 브라우저에서 생성·검증합니다. 64자리 16진수 출력, 파일·텍스트 지원. 가입 불필요, 데이터 미전송.

트래킹 없음 브라우저 실행 무료
모든 해싱은 브라우저 내부에서 로컬로 수행됩니다. 어떤 데이터도 서버로 전송되지 않습니다.
알고리즘
NIST FIPS 180-4 테스트 벡터 대조로 SHA-256 정확성 검토 완료 — Go Tools 엔지니어링 팀 · May 28, 2026

SHA-256이란 무엇인가요?

SHA-256(Secure Hash Algorithm, 256비트)은 SHA-2 계열에서 가장 널리 배포된 암호 해시 함수입니다. 미국 NSA가 설계하고 NIST가 2001년 FIPS 180-2의 일부로 발표했습니다. 텍스트, 파일, 바이트 스트림 등 어떤 입력이든 받아 암호학적 수준의 확실성으로 입력을 고유하게 식별하는 고정된 256비트(64자리 16진수) 지문을 만듭니다.

SHA-256은 발표 이후 모든 충돌 공격에 저항해 왔습니다. NIST FIPS 180-4 사양이 현재 유효하며, 미국 연방정부, PCI DSS, FIPS 140-3, IETF 인터넷 표준이 승인했습니다. TLS 인증서(브라우저가 인증서 대화상자에 표시하는 지문), Git의 현대 객체 ID 형식(Git 2.29 이후 SHA-256 모드), Bitcoin 트랜잭션 ID와 작업 증명, JWT 서명 검증(JWS HS256, RS256, ES256 계열), 모든 주요 패키지 관리자(npm, pip, cargo, apt)의 무결성 열을 지원합니다.

이 도구는 Web Crypto API의 crypto.subtle.digest('SHA-256', ...)를 사용해 브라우저 내부에서 SHA-256을 완전히 계산합니다. 바이트는 업로드되지 않으며 서버는 관여하지 않습니다. 결과 해시는 sha256sum, OpenSSL의 dgst -sha256, 또는 Python의 hashlib.sha256()이 만드는 것과 정확히 같습니다.

SHA-256 사용 시점: 파일 무결성 검증, 콘텐츠 주소 지정 저장소, 디지털 서명 워크플로, 인증서 지문, 콘텐츠 해싱을 통한 캐시 무효화, 중복 제거. SHA-256을 사용하지 말아야 할 시점: 비밀번호 저장(bcrypt, scrypt 또는 Argon2 사용 — SHA-256은 비밀번호 방어에 너무 빠름), 적절한 구조 없는 HMAC(전용 HMAC 라이브러리 사용), 또는 범용 무작위 ID(대신 UUID 사용).

비교: SHA-256은 MD5의 32자리(2004년 이후 폐기), SHA-1의 40자리(2017년 이후 폐기), SHA-384의 96자리, SHA-512의 128자리 대비 64자리를 만듭니다. 256비트 출력은 128비트의 충돌 저항성을 제공합니다.

// Hash text using Web Crypto API (SHA-256)
async function sha256(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest('SHA-256', data);
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

await sha256('Hello, World!');
// → 'dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'

SHA-256 예시

Ubuntu ISO 다운로드 검증

ubuntu-24.04.iso

다운로드한 ISO를 파일 탭에 끌어다 놓으면 도구가 청크 단위로 SHA-256을 계산하며 큰 파일의 경우 진행률을 표시합니다. 결과 해시를 Ubuntu가 releases.ubuntu.com에 게시한 SHA256SUMS 파일과 비교하십시오. 일치하면 다운로드가 Canonical이 서명한 것과 비트 단위로 동일함을 확인합니다. 이것이 모든 Linux 배포판의 표준 무결성 검사입니다.

TLS 인증서 지문

-----BEGIN CERTIFICATE-----MIIDXTCCAkWg...

PEM 인코딩 인증서 본문을 붙여넣으십시오. SHA-256 지문은 브라우저 인증서 정보 대화상자와 HTTP Public Key Pinning 헤더에 표시되는 값입니다. 현대 브라우저는 이를 콜론으로 구분된 32바이트 16진수로 표시하지만, 이 도구는 대부분의 API와 설정 파일에서 기대하는 끊어지지 않은 64자리 형식을 제공합니다.

캐시 무효화를 위한 콘텐츠 해시 생성

/* CSS 파일 내용 */

일반적인 정적 사이트 패턴: CSS나 JS 파일 내용을 해싱하고 해시의 첫 8자리를 쿼리 문자열(?v=a1b2c3d4)이나 파일명 접미사(app.a1b2c3d4.css)로 추가해 1년 캐시 헤더와 함께 제공합니다. 내용이 변경되면 해시가 변경되어 캐시를 결정론적으로 무효화합니다. SHA-256은 충돌이 사실상 불가능하므로 캐시 무효화에 적합합니다.

프리이미지 조회 검증

password123
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f

'password123'의 SHA-256 해시는 ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f입니다. 이 예시의 요점은 위험성입니다. 비밀번호 저장에 순수 SHA-256을 절대 사용해서는 안 됩니다. 너무 빠르기 때문입니다. 현대 GPU는 초당 수십억 개의 SHA-256 해시를 무차별 대입할 수 있습니다. 비밀번호에는 적절한 솔트와 비용 매개변수를 가진 bcrypt, scrypt 또는 Argon2를 사용하십시오. SHA-256은 무결성을 위한 것이지 자격증명 저장을 위한 것이 아닙니다.

SHA-256 해시 생성 방법

  1. 1

    텍스트 붙여넣기 또는 파일 끌어다 놓기

    텍스트 탭을 선택하고 입력란에 임의의 문자열을 붙여넣거나, 파일 탭으로 전환해 파일을 끌어다 놓으십시오. SHA-256 알고리즘 선택기가 이미 활성화되어 있습니다. 입력과 동시에 해싱이 이루어집니다. 파일의 경우 큰 업로드(>10 MB) 중 진행 표시기가 나타납니다.

  2. 2

    64자리 해시 복사

    해시 출력 옆의 복사 버튼을 클릭하십시오. 64자리 16진수 값이 클립보드에 복사됩니다. 다운스트림 시스템이 특정 대소문자를 요구한다면 대문자/소문자 토글을 사용하십시오. Git은 소문자를 사용하고 일부 Windows 도구는 대문자를 기본으로 합니다.

  3. 3

    비교 탭으로 검증

    비교 탭으로 전환해 두 SHA-256 해시를 붙여넣으십시오. 도구는 타이밍 정보를 누출하지 않는 상수 시간 비교로 일치/불일치를 보고합니다. 다운로드한 ISO 파일, 컨테이너 이미지 다이제스트, 서명된 JAR 지문 검증에 유용합니다.

기술 세부사항

알고리즘: SHA-2 계열, Merkle-Damgård 구조
SHA-256은 입력을 512비트 블록으로 처리하며, 처음 64개 소수의 세제곱근에서 도출된 상수와 함께 64라운드의 비트 연산(회전, XOR, 2^32 모듈러 덧셈)을 적용합니다. 최종 해시는 마지막 블록 처리 후의 내부 상태입니다. 구현: FIPS 180-4 섹션 4.2 및 6.2.
출력: 256비트, 64자리 16진수
[0-9a-f](소문자) 또는 [0-9A-F](대문자) 범위의 항상 정확히 64자리입니다. 다른 인코딩(Base64, Base64URL)은 문자열을 단축하지만, 이 도구는 표준 16진수 형식을 출력합니다.
성능: 브라우저에서 ~500 MB/s, 네이티브에서 ~2 GB/s
Web Crypto의 SHA-256 구현은 JS VM 외부에서 실행되는 컴파일된 C/Rust이므로 네이티브 도구와 경쟁력이 있습니다. 일반적인 브라우저 해시율: 300~800 MB/s. 1 GB 파일은 1~3초 안에 해싱됩니다.
표준: FIPS 180-4, RFC 6234, NIST SP 800-107
현재 2030년 이후까지 모든 보안 강도 수준에 대해 NIST가 승인했습니다. PCI DSS 4.0에서 카드 소지자 데이터 무결성에 필요하며, FedRAMP 및 Common Criteria EAL2+ 평가에도 요구됩니다.

모범 사례

항상 유니코드 코드 포인트가 아닌 UTF-8 바이트를 해싱
동일한 문자열의 다른 인코딩은 다른 해시를 만듭니다. UTF-8이 사실상 표준이며, 이 도구는 해싱 전에 입력을 UTF-8로 인코딩합니다. UTF-16(일부 Windows API)이나 Latin-1을 사용하는 도구와 일치시켜야 한다면 외부에서 미리 인코딩해야 합니다.
검증 시 상수 시간 비교 사용
코드에서 두 해시를 비교할 때 상수 시간 동등 검사를 사용하십시오(Node.js의 timingsafe_equal, Python의 hmac.compare_digest). 단순 === 또는 strcmp는 공격자가 활용할 수 있는 타이밍 정보를 누출합니다. 이 도구의 비교 탭은 이미 상수 시간 비교를 사용합니다.
비보안 용도에서 SHA-256 잘라내기는 허용 가능
캐시 무효화 파일명이나 짧은 콘텐츠 ID의 경우 SHA-256 해시의 첫 8자리나 16자리만 사용해도 됩니다. 인터넷 규모에서도 충돌 확률은 여전히 천문학적으로 낮습니다. 암호 용도(서명, 지문)에는 항상 전체 64자리를 유지하십시오.
키 사용 시 솔트 포함
비밀에서 키나 토큰을 도출하기 위해 SHA-256을 사용한다면 항상 입력당 고유한 솔트를 포함하십시오. 솔트 없이는 동일한 입력이 동일한 해시를 만들어 정보가 누출됩니다. 키 도출에는 원시 SHA-256 대신 HKDF(RFC 5869) 또는 HMAC-SHA-256을 사용하십시오.

SHA-256 자주 묻는 질문

SHA-256이란 무엇이며 MD5나 SHA-1과 어떻게 다른가요?
SHA-256은 NSA가 설계하고 NIST가 FIPS 180-4에서 표준화한 SHA-2 계열의 256비트 암호 해시 함수입니다. 64자리 16진수 출력을 만듭니다. MD5(128비트, 2004년 이후 폐기)와 SHA-1(160비트, 2017년 이후 폐기)과 달리 SHA-256은 암호학적으로 여전히 안전합니다. 실용적 충돌이 발견된 적이 없으며, 디지털 서명, 인증서 지문, 블록체인 트랜잭션 ID, 무결성 검증의 현재 업계 표준입니다.
SHA-256 해시의 길이는 얼마인가요?
항상 64자리 16진수(256비트 = 32바이트, 바이트당 2자리 16진수)입니다. 입력 크기와 관계없이 출력 길이는 고정됩니다. 1바이트 입력과 10 GB 입력 모두 64자리 16진수를 만듭니다. 이 고정 길이가 지문으로 유용한 이유입니다.
SHA-256은 비밀번호 저장에 안전한가요?
아니요. SHA-256은 너무 빠릅니다. 현대 GPU는 초당 수십억 개의 SHA-256 해시를 계산할 수 있으며, 이것이 정확히 공격자가 비밀번호 무차별 대입에 원하는 것입니다. 의도적으로 느린 비밀번호 해시를 사용하십시오: 적절한 솔트와 높은 비용 매개변수를 가진 bcrypt, scrypt 또는 Argon2id. SHA-256은 무결성(데이터가 변조되지 않았는지 검증)을 위한 것이지 비밀을 저장하기 위한 것이 아닙니다.
SHA-256을 역으로 돌려 원본 입력을 찾을 수 있나요?
아니요. SHA-256은 단방향 함수입니다. 해시가 주어져도 입력을 복원하는 효율적인 알고리즘이 없습니다. 유일한 일반적 공격은 무차별 대입입니다. 임의의 입력에 대해서는 계산상 불가능합니다. 예외: 짧고 예측 가능한 입력(흔한 비밀번호, 단순한 단어)은 레인보우 테이블에서 조회할 수 있습니다. 이것이 비밀번호에 솔트가 중요한 이유입니다.
SHA-256과 SHA-2의 차이는 무엇인가요?
SHA-2는 계열 이름이고 SHA-256은 그 중 하나의 특정 구성원입니다. SHA-2 계열에는 SHA-512(512비트), SHA-384(잘린 SHA-512), SHA-224(잘린 SHA-256), SHA-512/224, SHA-512/256도 포함됩니다. 모두 다른 워드 크기와 자르기 규칙을 가진 동일한 Merkle-Damgård 구조를 공유합니다. SHA-256은 가장 널리 배포된 구성원입니다. TLS, JWT, Git, Bitcoin 모두 기본으로 SHA-256을 사용합니다.
이 도구를 사용할 때 데이터가 서버로 전송되나요?
아니요. SHA-256은 Web Crypto API(crypto.subtle.digest)를 사용해 브라우저 내부에서 완전히 계산됩니다. 해싱하는 동안 DevTools → 네트워크 탭을 열면 외부 요청이 전혀 없음을 확인할 수 있습니다. 파일 모드에서 끌어다 놓은 파일은 FileReader API로 읽혀 로컬에서 해싱됩니다. 바이트는 기기를 떠나지 않습니다.
다운로드의 SHA-256 체크섬을 어떻게 검증하나요?
1) 파일을 다운로드합니다. 2) 이 도구를 열고 파일 탭을 클릭합니다. 3) 파일을 끌어다 놓습니다. 4) 해시 계산이 완료될 때까지 기다립니다(큰 파일은 몇 초 소요). 5) 배포자의 SHA256SUMS 파일을 엽니다. 6) 비교 탭에 두 해시를 붙여넣습니다. 녹색은 일치, 빨간색은 파일이 손상되거나 변조되었음을 의미합니다. 대부분의 Linux 배포판, 언어 런타임(Python, Node.js), 소프트웨어 공급업체가 정확히 이 목적으로 다운로드와 함께 SHA-256 체크섬을 게시합니다.
SHA-256 출력이 커맨드라인 도구와 왜 다른가요?
거의 항상 공백이나 인코딩 때문입니다. 셸 명령 `echo "hello" | sha256sum`은 후행 줄 바꿈(\n)을 포함하므로 해시는 "hello"가 아닌 "hello\n"에 대한 것입니다. `echo -n "hello"`를 사용해 제거하십시오. 다른 주의사항: Windows 줄 바꿈(\r\n vs \n), UTF-8 BOM, UTF-8 바이트와 UTF-16 바이트 해싱의 차이. SHA-256은 극도로 민감합니다. 단일 바이트만 달라져도 전체 출력이 변경됩니다.
SHA-256은 빈 파일을 해싱할 수 있나요?
예. 0바이트의 SHA-256은 잘 알려진 상수입니다: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. 이것은 때때로 센티넬 값으로 사용되거나 해싱 파이프라인이 올바르게 연결되었는지 빠르게 검증하는 데 사용됩니다.
SHA-256과 SHA-512 중 어느 것을 사용해야 하나요?
대부분의 경우 SHA-256을 사용하십시오. 32비트 하드웨어에서 더 빠르고 범용적으로 지원되며 충돌에 대해 128비트 보안을 제공합니다. SHA-512는 실제로 더 빠른 64비트 하드웨어에서 사용하거나 특정 프로토콜이 256비트 충돌 저항성을 요구할 때 사용하십시오. 파일 체크섬, Git, TLS와 같은 일상적인 용도에는 SHA-256이 표준입니다.