본문으로 바로가기

해시 생성기

텍스트나 파일의 MD5·SHA-1·SHA-256·SHA-384·SHA-512·SHA3-256·BLAKE3 해시를 한 번에 계산하고, 배포처가 공개한 해시값과 일치하는지 비교합니다.

입력 방식

계산할 알고리즘
표기 방식

해시 결과

  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

파일은 이 기기 안에서만 처리되며 서버로 전송되지 않습니다. 어떻게 동작하나요?

hello 문자열을 실제 SHA-256 해시로 변환

해시란 무엇인가요

해시(hash)는 길이가 얼마든 상관없이 데이터를 정해진 길이의 값으로 요약하는 계산입니다. 같은 입력은 언제나 같은 값을 내고, 입력이 조금만 달라도 값 전체가 달라집니다. 결과에서 원래 데이터를 되살릴 수는 없습니다.

텍스트 칸에 hello를 넣으면 SHA-256은 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824입니다. 첫 글자만 대문자로 바꾼 Hello는 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969로, 앞의 값과 닮은 구석이 없습니다. 이 성질 덕분에 해시값 두 개만 견주어도 두 데이터가 같은지 알 수 있습니다. 이렇게 확인용으로 쓰는 해시값을 체크섬이라고도 부릅니다.

사용 방법

  1. 입력 방식에서 “텍스트”와 “파일” 중 하나를 고릅니다. 텍스트는 “해시를 계산할 텍스트” 칸에 넣고, 파일은 끌어다 놓거나 선택합니다. 파일 형식에는 제한이 없습니다.
  2. 계산할 알고리즘에서 필요한 것을 켭니다. 버튼을 누를 때마다 켜지고 꺼지며, 여러 개를 함께 켤 수 있습니다. 모두 끄면 “알고리즘을 하나 이상 선택하세요.“라는 안내가 나옵니다.
  3. 표기 방식에서 “16진수 (소문자)”, “16진수 (대문자)”, “Base64” 중 하나를 고릅니다.
  4. 해시 결과에 켜 둔 알고리즘마다 한 줄씩 값이 나옵니다.
  5. 비교할 값이 있으면 예상 해시값과 비교 칸에 붙여넣습니다.
알고리즘 해시 길이 16진수 자릿수 처음부터 켜져 있음
MD5 128비트 32 예
SHA-1 160비트 40 예
SHA-256 256비트 64 예
SHA-384 384비트 96 예
SHA-512 512비트 128 예
SHA3-256 256비트 64 아니요
BLAKE3 256비트 64 아니요

SHA3-256은 SHA-256과 길이가 같지만 SHA-2와 다르게 설계된 SHA-3 계열이라 같은 입력에도 값이 다릅니다. BLAKE3는 미국 국립표준기술연구소(NIST) 표준에 들어 있지 않은 알고리즘입니다. Base64로 표기하면 같은 값이 더 짧아져서 MD5는 24자, SHA-256은 44자가 됩니다.

내려받은 파일이 원본과 같은지 확인하기

배포 페이지에 “SHA-256: 3a7bd3e2…“처럼 해시값이 함께 적혀 있는 경우가 있습니다. 입력 방식을 “파일”로 바꿔 받은 파일을 올리고, 그 값을 “예상 해시값과 비교” 칸에 붙여넣으세요.

  • 켜 둔 알고리즘 가운데 하나와 같으면 “SHA-256 값과 일치합니다.“처럼 어느 알고리즘과 맞았는지 알려 주고, 결과 목록의 그 줄을 강조합니다. 붙여넣은 값이 어떤 알고리즘의 것인지 몰라도 됩니다.
  • 같은 값이 없으면 “계산된 값과 일치하지 않습니다.“가 나옵니다. 이때는 파일을 다시 내려받으세요.

비교할 때 16진수의 대소문자, 맨 앞의 0x, 중간의 공백·콜론(:)·하이픈(-)은 무시합니다. 5D:41:40:2A:...처럼 두 자리씩 끊어 적은 값도 그대로 붙여넣으면 됩니다. Base64로 적힌 값은 현재 표기 방식과 상관없이 알아보지만, 대소문자까지 정확히 같아야 합니다.

값이 일치한다는 것은 파일이 배포자가 해시를 계산한 파일과 같다는 뜻입니다. 배포 페이지의 해시값 자체가 바뀌어 있었다면 이 확인으로는 알 수 없습니다.

텍스트 해시가 다른 도구의 결과와 다를 때

텍스트는 UTF-8 바이트로 바꾼 뒤 계산합니다. 눈에 보이지 않는 글자 하나도 값에 반영되므로, 다른 도구와 결과가 다르면 대개 줄바꿈이 원인입니다.

  • hello의 SHA-256은 2cf24dba...이지만, 끝에 줄바꿈이 하나 붙은 hello는 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03입니다. 터미널에서 echo hello | sha256sum으로 얻은 값이 뒤쪽입니다. echo가 끝에 줄바꿈을 붙이기 때문입니다.
  • 텍스트를 메모장에 저장한 파일과 같은 텍스트를 붙여넣은 결과도 다를 수 있습니다. 파일의 인코딩이 UTF-8이 아니거나 줄바꿈 방식이 다르면 바이트가 달라집니다. 파일의 해시가 필요하면 내용을 붙여넣지 말고 “파일”로 올리세요.

큰 파일은 이렇게 처리합니다

파일은 한꺼번에 메모리에 올리지 않고 16MiB씩 잘라 읽으면서 계산합니다. 켜 둔 알고리즘은 같은 조각을 함께 받아 계산하므로 파일을 알고리즘 수만큼 여러 번 읽지 않습니다. 계산하는 동안 “해시 계산 중…” 진행 막대가 보이고, 취소하면 “계산을 취소했습니다.“가 나옵니다.

해시 계산에는 WebAssembly로 만든 hash-wasm 라이브러리를 씁니다.

참고 자료

자주 묻는 질문

아무것도 입력하지 않았는데 해시값이 나와 있습니다. 오류인가요?

오류가 아닙니다. 텍스트 칸이 비어 있으면 길이가 0인 입력의 해시를 보여 줍니다. 이때 MD5는 d41d8cd98f00b204e9800998ecf8427e, SHA-256은 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855입니다. 어디선가 이 값을 봤다면 빈 파일이나 빈 문자열을 해시한 결과입니다.

배포 페이지의 값과 눈으로 보면 같은데 "계산된 값과 일치하지 않습니다"라고 나옵니다.

세 가지를 확인하세요. 첫째, 그 알고리즘이 "계산할 알고리즘"에서 켜져 있어야 합니다. 꺼 둔 알고리즘의 값과는 비교하지 않습니다. 둘째, 해시값만 붙여넣어야 합니다. "sha256:" 같은 접두사나 뒤에 붙은 파일 이름이 함께 들어가면 일치하지 않는 것으로 나옵니다. 셋째, 값 전체를 붙여넣어야 합니다. 앞 몇 자리만으로는 비교하지 않습니다.

파일을 계산하는 도중에 알고리즘을 켜거나 끄면 어떻게 되나요?

진행 중이던 계산을 버리고 파일을 처음부터 다시 읽습니다. 큰 파일이라면 알고리즘을 먼저 정한 뒤에 파일을 올리는 편이 빠릅니다. "표기 방식"은 이미 계산한 값을 다시 적는 것뿐이라 바꿔도 다시 계산하지 않습니다.

파일 여러 개를 한꺼번에 올릴 수 있나요?

한 번에 한 파일만 계산합니다. 여러 개를 끌어다 놓으면 첫 번째 파일만 받습니다. 다른 파일을 올리면 앞 파일의 결과는 새 결과로 바뀝니다.

비밀번호를 SHA-256으로 해시해서 저장해도 되나요?

권하지 않습니다. OWASP는 SHA-256 같은 빠른 해시가 비밀번호 저장에 맞지 않는다고 설명합니다. 계산이 빠른 만큼 공격자도 짧은 시간에 많은 후보를 대입해 볼 수 있기 때문입니다. 비밀번호에는 Argon2id, scrypt, bcrypt처럼 일부러 느리게 만든 전용 함수를 쓰고, 이 도구가 만드는 해시는 파일 확인 같은 용도에 쓰세요.

MD5와 SHA-1로 파일의 진위를 확인해도 되나요?

MD5와 SHA-1은 지금도 체크섬으로 자주 보이지만, 누군가 일부러 조작할 수 있는 상황에서는 믿을 수 없습니다. 서로 다른 두 입력이 같은 해시값을 내는 "충돌"을 만드는 방법이 알려져 있기 때문입니다. NIST는 오늘날의 컴퓨터로 원본과 같은 SHA-1 해시를 내는 가짜 메시지를 만들 수 있다며 SHA-1을 2030년 12월 31일까지 단계적으로 없애고 SHA-2나 SHA-3로 옮기라고 권고했습니다. • 전송 중에 파일이 깨졌는지만 보는 용도라면 MD5와 SHA-1도 쓸 수 있습니다. • 전자서명이나 인증서처럼 위조를 막아야 하는 곳에는 SHA-256 이상을 씁니다. • 배포자가 MD5와 SHA-256을 함께 공개했다면 SHA-256으로 확인하세요.

사용한 오픈소스: hash-wasm (MIT)

최종 수정일: