SHA-256 해시 생성기 및 체크섬 도구
SHA-256 해시를 브라우저에서 생성·검증합니다. 64자리 16진수 출력, 파일·텍스트 지원. 가입 불필요, 데이터 미전송.
우리 팀은 SHA-256 출력을 FIPS 180-4 및 NIST CAVP 테스트 벡터와 대조해 검증하고 Web Crypto API 정확성을 확인합니다.
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
Ubuntu ISO는 이 도구의 파일 한도인 256 MB를 넘으므로 해시는 명령줄에서 계산하세요(Linux는 sha256sum, macOS는 shasum -a 256, Windows는 certutil -hashfile). 공식 값과의 대조는 이 도구의 비교 탭에서 할 수 있습니다. 결과 해시를 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는 엄청난 속도로 후보를 시도할 수 있습니다. 비밀번호에는 적절한 솔트와 비용 매개변수를 가진 bcrypt, scrypt 또는 Argon2를 사용하십시오. SHA-256은 무결성을 위한 것이지 자격증명 저장을 위한 것이 아닙니다.
SHA-256 해시 생성 방법
- 1
텍스트 붙여넣기 또는 파일 끌어다 놓기
텍스트 탭을 선택하고 입력란에 임의의 문자열을 붙여넣거나, 파일 탭으로 전환해 파일을 끌어다 놓으십시오. SHA-256 알고리즘 선택기가 이미 활성화되어 있습니다. 입력과 동시에 해싱이 이루어집니다. 파일은 최대 256 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진수 형식을 출력합니다.
- 성능: Web Crypto를 통한 네이티브 코드
- Web Crypto의 SHA-256 구현은 JS VM 외부에서 실행되는 컴파일된 C/Rust이므로 네이티브 도구와 경쟁력이 있습니다. 이 도구는 파일 전체를 메모리로 읽어 들이므로 파일 크기를 256 MB로 제한합니다.
- 표준: 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 출력이 커맨드라인 도구와 왜 다른가요?
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은 빈 파일을 해싱할 수 있나요?
SHA-256과 SHA-512 중 어느 것을 사용해야 하나요?
관련 도구
모든 도구 보기 →AES 복호화 도구 — OpenSSL·CryptoJS 호환
보안 도구
온라인 AES 복호화 — GCM/CBC/CTR, 암호 문구 또는 원시 키, OpenSSL·CryptoJS "U2FsdGVkX1" 형식 자동 인식. 브라우저에서만 실행되며 키는 유출되지 않습니다.
AES 암호화 도구 — GCM, CBC, CTR 모드
보안 도구
무료 온라인 AES 암호화 도구 — AES-128/192/256, GCM/CBC/CTR, 암호 문구(PBKDF2) 또는 원시 키. 브라우저에서만 실행되고 서버 업로드는 없습니다.
Bcrypt 해시 생성 및 검증 도구
보안 도구
온라인으로 bcrypt 비밀번호 해시를 생성·검증하세요 — 조절 가능한 비용 인자, $2b$/$2a$/$2y$ 접두사 지원. 100% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.
CRC 순환 중복 검사 계산기
보안 도구
16진수나 텍스트에서 CRC-8·CRC-16·CRC-32 변형 63개를 계산하는 온라인 도구. 맞지 않는 체크섬을 역조회 칸에 넣으면 MODBUS 등 어느 변형인지 알려 줍니다.
DES / 3DES 암호화·복호화 도구
보안 도구
브라우저에서 DES·3DES(2/3키)·ECB/CBC·PKCS#7 암호화·복호화. 키 길이(8/16/24바이트)를 엄격 검증하고 동등한 OpenSSL 명령을 제공합니다. 업로드 없음.
HMAC 생성기 및 서명 검증 도구
보안 도구
무료 온라인 HMAC 생성·검증 도구. Text/Hex/Base64 키로 HMAC-SHA256/SHA1/SHA384/SHA512를 Hex/Base64/Base64URL로 출력. 100% 브라우저 실행, 키 유출 없음.