해시 생성기 (SHA-256 / SHA-512)
텍스트나 파일의 SHA-1, SHA-256, SHA-384, SHA-512 해시를 계산합니다 — 브라우저의 WebCrypto를 이용해 로컬에서 처리되며, 아무것도 업로드되지 않습니다.
조회수 1,229회
계산 중…
파일을 읽을 수 없습니다.
작동 원리
암호학적 해시 함수는 단어 하나든, 문단 하나든, 수 기가바이트짜리 파일이든 어떤 크기의 입력이든 받아들여 다이제스트라고 부르는 고정 길이의 출력을 만들어냅니다: SHA-1은 160비트, SHA-256은 256비트, SHA-384는 384비트, SHA-512는 512비트입니다. 이 도구는 네 가지 모두를 브라우저에 내장된 WebCrypto 엔진을 사용해 로컬에서 계산합니다 — 여러분의 HTTPS 연결이 이미 신뢰하고 있는 것과 동일한 검증된 구현이므로, 큰 파일도 빠르게 해시되며 절대 기기 밖으로 나가지 않습니다.
이 함수들을 유용하게 만드는 세 가지 특성이 있습니다. 첫째, 단방향입니다: 다이제스트가 주어져도 원래 입력을 복원할 실질적인 방법은 없으며, 유일한 방법은 추측값을 다시 해시해서 비교하는 것뿐입니다. 둘째, 결정론적입니다: 같은 입력은 항상 정확히 같은 다이제스트를 만들어내며, 바로 이 점이 체크섬을 애초에 의미 있게 만듭니다. 셋째, 눈사태 효과(avalanche effect)를 보입니다 — 입력의 비트 하나만 바꿔도, 예를 들어 수 기가바이트짜리 파일 속 문자 하나만 바꿔도 출력 비트의 대략 절반이 뒤집힙니다. 다이제스트가 16진수 한 글자라도 다르다면 입력은 동일하지 않다는 뜻이며, 그것으로 끝입니다.
전형적인 예시: 소프트웨어 배포자가 다운로드 링크와 함께 sha256sum: 9f86d0...를 공개합니다. 다운로드한 뒤 여기서 파일을 해시하고 두 문자열을 한 글자씩 비교해 보십시오 — 일치한다면 파일이 손상 없이 도착한 것이고, 일치하지 않는다면 전송 중에 손상되었거나 변조된 것입니다. 같은 기법으로 두 파일이 바이트 단위로 동일한지 비교하거나, 파일 내용으로부터 안정적인 캐시 무효화 키를 생성할 수도 있습니다.
알아두어야 할 점
MD5는 의도적으로 제공하지 않습니다. MD5는 암호학적으로 이미 깨진 알고리즘입니다: 연구자들은 실질적인 충돌 공격을 입증했는데, 이는 서로 다른 두 입력을 조작해 동일한 MD5 다이제스트를 만들어낼 수 있다는 뜻이며, 이는 무결성이나 보안 검증이라는 목적 자체를 무너뜨립니다. 브라우저의 WebCrypto API가 이런 이유로 MD5를 아예 제외하고 있습니다. 배포자가 MD5 체크섬만 공개했다면 이를 최후의 수단으로만 취급하고 SHA-256을 요청하십시오 — 사실상 모든 최신 배포판이 이를 제공합니다.
SHA-1은 우발적인 손상(잘못된 다운로드, 디스크 오류)을 탐지하는 데는 문제가 없지만, 인증서나 디지털 서명 같은 보안 목적으로는 더 이상 권장되지 않습니다. SHA-1에 대해서도 충돌 공격이 입증되었기 때문입니다. 결과가 의도적인 공격자에 맞서 버텨야 한다면 SHA-256 이상을 사용하십시오.
마지막으로, 해시만으로는 비밀번호를 저장하는 올바른 방법이 될 수 없습니다: 비밀번호를 단순 SHA-256으로 해시하는 것은 계산이 빠르다는 뜻이고, 이는 유출된 데이터베이스를 손에 넣은 공격자가 초당 수십억 개의 후보를 시도할 수 있다는 뜻입니다. 올바른 비밀번호 저장 방식은 계정마다 고유한 무작위 솔트를 추가하고, bcrypt·scrypt·Argon2처럼 의도적으로 느린 전용 함수를 사용합니다 — 이 도구는 인증이 아니라 체크섬과 무결성 검증을 위한 것입니다.
자주 묻는 질문
왜 MD5는 제공되지 않나요?
브라우저의 WebCrypto는 암호학적으로 이미 취약해진 MD5를 의도적으로 제외합니다. 배포자가 MD5 체크섬만 공개했다면 SHA-256을 요청하세요 — 최신 배포판이라면 대부분 제공합니다.
SHA-1을 사용해도 안전한가요?
우발적인 손상 여부를 확인하는 무결성 검사라면 안전합니다. 서명이나 인증서 등 보안 목적이라면 SHA-1은 더 이상 권장되지 않으니 SHA-256 이상을 사용하세요 — 그래서 목록 맨 앞에 배치했습니다.
파일이 해시 계산을 위해 업로드되나요?
아니요. 파일은 브라우저 안에서 WebCrypto로 읽고 해시를 계산하며, 어디로도 전송되지 않습니다.
해시를 원래 입력으로 되돌릴 수 있나요?
아니요 — 그것이 바로 단방향 함수의 존재 이유입니다. 다이제스트에서 입력으로 가는 수학적인 지름길은 없습니다. 유일한 "역산" 방법은 입력을 추측해 해시한 뒤 일치하는지 확인하는 것뿐이며, 이는 짧거나 예측 가능한 입력에 대해서만 현실적입니다. 유출된 솔트 없는 비밀번호 해시 목록이 뚫리는 방식이 정확히 이것입니다.
이 도구로 비밀번호를 해시해서 결과를 저장해도 되나요?
실제 인증 시스템에서는 안 됩니다. 비밀번호의 원시 SHA-2 해시는 결정론적이고 계산이 빠르므로, 유출된 해시 데이터베이스는 빠르게 무차별 대입으로 뚫릴 수 있습니다. 비밀번호 저장에는 솔트(계정마다 고유한 무작위 값)와 bcrypt나 Argon2 같은 의도적으로 느린 알고리즘이 필요합니다 — 이 도구는 파일과 텍스트의 무결성 검증을 위한 것이지 자격 증명 저장을 위한 것이 아닙니다.
비슷한 도구
문제 신고하기
해시 생성기 (SHA-256 / SHA-512)
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!