SHA-256 해시 생성기 및 체크섬 도구
SHA-256 해시를 브라우저에서 생성·검증합니다. 64자리 16진수 출력, 파일·텍스트 지원. 가입 불필요, 데이터 미전송.
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
텍스트 붙여넣기 또는 파일 끌어다 놓기
텍스트 탭을 선택하고 입력란에 임의의 문자열을 붙여넣거나, 파일 탭으로 전환해 파일을 끌어다 놓으십시오. SHA-256 알고리즘 선택기가 이미 활성화되어 있습니다. 입력과 동시에 해싱이 이루어집니다. 파일의 경우 큰 업로드(>10 MB) 중 진행 표시기가 나타납니다.
- 2
64자리 해시 복사
해시 출력 옆의 복사 버튼을 클릭하십시오. 64자리 16진수 값이 클립보드에 복사됩니다. 다운스트림 시스템이 특정 대소문자를 요구한다면 대문자/소문자 토글을 사용하십시오. Git은 소문자를 사용하고 일부 Windows 도구는 대문자를 기본으로 합니다.
- 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 해시의 길이는 얼마인가요?
SHA-256은 비밀번호 저장에 안전한가요?
SHA-256을 역으로 돌려 원본 입력을 찾을 수 있나요?
SHA-256과 SHA-2의 차이는 무엇인가요?
이 도구를 사용할 때 데이터가 서버로 전송되나요?
다운로드의 SHA-256 체크섬을 어떻게 검증하나요?
SHA-256 출력이 커맨드라인 도구와 왜 다른가요?
SHA-256은 빈 파일을 해싱할 수 있나요?
SHA-256과 SHA-512 중 어느 것을 사용해야 하나요?
관련 도구
모든 도구 보기 →JWT 디코더 (JWT Decoder)
보안 도구
무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.
MD5 해시 생성기 · 파일 체크섬 도구
보안 도구
MD5, SHA-256, SHA-1, SHA-512 해시를 온라인에서 무료로 생성합니다. 브라우저에서 텍스트나 파일을 해싱하고 체크섬을 검증하며 결과를 복사할 수 있습니다.
무작위 비밀번호 생성기 (Random Password Generator)
보안 도구
강력한 무작위 비밀번호를 즉시 만드는 무료 온라인 도구. 길이와 문자 종류를 지정해 최대 50개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.
SHA-1 해시 생성기 (160비트 레거시)
보안 도구
SHA-1 해시를 브라우저에서 무료로 생성합니다. 40자리 16진수 출력, 업로드 없음. Git 지문 조회, 구형 인증서 검사, 마이그레이션 감사용 레거시 도구입니다.
SHA-3 해시 생성기 (Keccak SHA3-256)
보안 도구
SHA-3(NIST FIPS 202 Keccak) 해시를 브라우저에서 생성합니다. 64자리 16진수 SHA3-256, js-sha3 지연 로딩. 미전송.
SHA-384 해시 생성기 (TLS Suite B 해시)
보안 도구
SHA-384 해시를 브라우저에서 생성합니다. 96자리 16진수, 길이 확장 면역, NSA Suite B, TLS AES-256-GCM. 미전송.