해시 생성기

텍스트나 파일의 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시를 만들고 체크섬을 확인합니다. 파일은 기기 밖으로 나가지 않습니다.

해시 만들기와 체크섬 확인 방법

  1. 입력 방식을 텍스트로 둔 채 입력하거나 붙여 넣습니다. 파일을 확인하려면 파일로 바꾸고 기기에서 파일을 고릅니다.
  2. MD5, SHA-1, SHA-256, SHA-384, SHA-512 값이 표에 한꺼번에 나타나며, 줄마다 복사 버튼이 있습니다. 붙여 넣을 곳이 대문자 16진수를 요구하면 대문자를 켭니다.
  3. 내려받은 파일을 검증하려면 배포처가 공개한 체크섬을 체크섬 확인 칸에 붙여 넣습니다. 어떤 알고리즘인지 고를 필요는 없습니다. 일치하는 줄이 초록색으로 바뀌고 메시지에 알고리즘 이름이 나옵니다. 대소문자와 앞뒤 공백은 무시합니다.

파일은 서버로 보내지지 않고 브라우저가 직접 읽어서 해시를 계산합니다. 그래서 큰 설치 파일이나 기밀 문서를 확인해도 업로드 시간이 들지 않고 내용이 밖으로 나가지 않습니다. 다만 아주 큰 파일은 한꺼번에 메모리에 올리므로, 수 GB짜리 디스크 이미지는 휴대폰에서 느릴 수 있습니다.

해시란

암호학적 해시 함수는 단어 하나든 계약서든 4GB 동영상이든, 어떤 입력이든 길이가 정해진 지문으로 바꿉니다. 같은 입력은 언제나 같은 값을 내고, 조금만 바뀌어도 전혀 다른 값이 나오며, 해시 값에서 원래 입력을 거꾸로 알아낼 현실적인 방법이 없습니다. 따라서 해시는 암호화가 아닙니다. 키도 없고 복호화할 것도 없습니다.

알고리즘길이16진수 글자 수현재 위상
MD5128비트32보안 용도로는 깨짐. 우연한 손상을 찾는 데는 충분
SHA-1160비트40보안 용도로는 깨짐. 오래된 도구와 Git에서 아직 쓰임
SHA-256256비트64체크섬과 서명의 현재 표준
SHA-384384비트96SHA-2 계열, 안전
SHA-512512비트128SHA-2 계열, 안전

공개된 체크섬의 길이를 보면 알고리즘을 알 수 있습니다. 16진수 32자리는 MD5, 64자리는 SHA-256인 식입니다.

예시

  • hello → SHA-256 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824, MD5 5d41402abc4b2a76b9719d911017c592.
  • 첫 글자만 대문자인 Hello → SHA-256 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969. 한 글자만 바뀌었는데 전혀 관계없는 결과가 나옵니다.
  • The quick brown fox jumps over the lazy dog → MD5 9e107d9d372bb6826bd81d3542a419d6. 끝에 마침표를 하나 붙이면 e4d909c290d0fb1ca068ffaddf22cbd0이 됩니다.
  • 빈 입력에도 해시가 있습니다. SHA-256은 e3b0c442…b855입니다. 이 페이지는 입력하기 전까지 표를 비워 두지만, 이 값이 내 로그나 데이터베이스에 보인다면 어딘가에서 빈 문자열을 해시한 것입니다.

명령줄 결과와 다를 때

텍스트는 입력한 그대로 UTF-8 바이트로 해시됩니다. 결과가 다르다면 거의 언제나 눈에 보이지 않는 바이트 때문입니다.

  • 끝의 줄바꿈. echo hello | sha256sum은 hello 뒤의 줄바꿈까지 해시해서 5891b5b5…6be03을 출력합니다. 이 페이지와 같은 값을 얻으려면 printf %s hello나 echo -n hello를 쓰세요.
  • 줄 끝 문자. Windows에서 저장한 파일은 줄 끝이 CR LF이고, 브라우저 입력 칸에 붙여 넣은 텍스트는 LF만 씁니다. 파일을 확인할 때는 내용을 복사해 붙이지 말고 파일 모드로 파일 자체를 해시하세요.
  • 문자 인코딩. café를 UTF-8로 인코딩하면 MD5가 07117fe4a1ebd544965dc19573183da2이지만, 옛 Latin-1 인코딩으로는 961f50f6282239d09e48f812c1ca7276입니다. EUC-KR로 저장된 한글 문서도 마찬가지로 UTF-8과 다른 값이 나옵니다.

파일의 결과는 Linux의 sha256sum 파일, macOS의 shasum -a 256 파일, Windows PowerShell의 Get-FileHash 파일(기본값이 SHA-256)과 똑같습니다.

MD5와 SHA-1은 보안용이 아닙니다

안전한 해시라면 같은 값을 내는 서로 다른 두 입력(충돌)을 찾는 것이 사실상 불가능해야 합니다. MD5는 2004년, SHA-1은 2017년에 실제 충돌이 공개되었습니다. 즉 공격자가 체크섬이 같은 두 파일을 만들어 낼 수 있습니다. 다운로드가 중간에 끊긴 것 같은 우연한 손상을 찾는 데는 여전히 쓸 만하지만, 누군가 조작할 수 있는 대상에는 SHA-256 이상을 쓰세요.

이 함수들 중 어느 것도 비밀번호 저장에 써서는 안 됩니다. 빠르게 계산되도록 설계되었기 때문에, 유출된 비밀번호 해시 목록은 일반 그래픽 카드로 초당 수십억 개의 후보와 대조될 수 있습니다. 비밀번호 저장에는 Argon2id, scrypt, bcrypt처럼 느리고 솔트를 쓰는 전용 알고리즘이 필요합니다. 애초에 강한 비밀번호가 필요하다면 비밀번호 생성기를 써 보세요.

자주 묻는 질문

해시를 복호화하거나 되돌릴 수 있나요?

아니요. ‘MD5 복호화’를 내세우는 사이트는 흔한 단어를 미리 해시해 둔 거대한 표에서 값을 찾아볼 뿐입니다. hello에는 통하지만 무작위 20자 문자열에는 통하지 않습니다.

내 파일의 체크섬은 어떤 알고리즘으로 만들까요?

SHA-256을 권합니다. 어디서나 지원되고, 붙여 넣기에 적당한 길이이며, 알려진 실용적인 공격이 없습니다. 값 옆에 알고리즘 이름도 함께 적어 두세요.

체크섬이 일치하면 파일이 안전하다는 뜻인가요?

내 파일이 체크섬을 만든 원본과 바이트 하나까지 같다는 뜻입니다. 공격자가 웹사이트 자체를 장악했다면 파일과 체크섬을 함께 바꿔 놓을 수 있으니, 별도의 신뢰할 수 있는 경로에서 받은 체크섬이나 서명된 릴리스를 우선하세요.

‘보안(https) 페이지가 필요합니다’라고 나오는 이유는?

SHA 알고리즘은 브라우저의 Web Crypto API로 계산하는데, 이 API는 보안 연결에서만 작동합니다. MD5는 페이지 자체 코드로 계산하므로 그런 경우에도 표시됩니다.