해시 생성
텍스트나 크기에 상관없이 파일의 MD5, SHA-1, SHA-256, SHA-384, SHA-512를 계산합니다. 다운로드한 파일이 공개된 체크섬과 일치하는지 확인할 때 유용합니다. 아무것도 저장하지 않습니다.
- 저장되지 않음
- 대기열 없음, 기다림 없음
- 회원가입 없음, 워터마크 없음
텍스트는 UTF-8로 해시해요. 다운로드한 파일을 검증하려면 파일을 끌어다 놓으세요.
사용 방법
텍스트 붙여넣기 또는 파일 놓기
텍스트는 UTF-8로 해시합니다. 파일은 여기서 읽어 해시하며, 저장하지 않습니다.
모든 해시를 한 번에 확인
다섯 가지 알고리즘을 한꺼번에 계산하므로, 어떤 것이 필요한지 미리 알 필요가 없습니다.
기대값과 비교
받은 체크섬을 붙여 넣으면 자동으로 대조해 드립니다. 한 글자씩 눈으로 비교하다 보면 실수가 생깁니다.
해시가 증명하는 것과 증명하지 못하는 것
해시는 아무리 많은 데이터라도 고정된 길이로 나타낸 지문이며, 정확히 짚어 둘 만한 성질이 두 가지 있습니다. 첫째, 일방향입니다. 정보 대부분이 사라지기 때문에 해시를 다시 데이터로 되돌리는 연산은 없습니다. 둘째, 민감합니다. 입력의 1비트만 바꿔도 출력 비트의 약 절반이 바뀝니다. 그래서 다운로드한 파일이 온전한지, 또는 두 파일을 바이트 단위로 비교하지 않고도 같은지 확인하는 데 유용합니다.
MD5와 SHA-1은 깨진 알고리즘이지만 이유가 있어서 여기에 있습니다. 둘 다 실용적인 충돌 공격이 있습니다. MD5는 2004년부터, SHA-1은 2017년에 실제 PDF 한 쌍으로 시연되었습니다. 즉 누군가 같은 해시를 가진 서로 다른 두 파일을 만들 수 있다는 뜻입니다. 따라서 둘 다 공격자 앞에서는 아무것도 증명하지 못합니다. 하지만 우발적인 손상을 잡아내는 데는 여전히 충분히 쓸 만하고, 실제로 많은 소프트웨어가 아직 MD5 체크섬을 공개하므로 다운로드 파일과 대조할 일이 생기는 것도 당연합니다. 누군가 속이려 할 수 있는 상황이라면 SHA-256을 쓰세요.
이 중 어떤 것으로도 비밀번호를 해시하지 마세요. 이 페이지에서 가장 중요한 내용입니다. 해시는 빠르게 설계되었고, 빠르다는 것은 비밀번호에는 정반대로 나쁜 성질입니다. 최신 그래픽 카드는 1초에 SHA-256 해시를 수십억 개 계산하므로, 해시된 비밀번호가 담긴 데이터베이스가 유출되면 몇 시간 만에 뚫립니다. 비밀번호 저장에는 사용자별 솔트를 쓰는 일부러 느린 함수가 필요합니다. argon2, bcrypt, scrypt는 일부러 시간과 메모리를 쓰도록 만들어졌습니다. 비밀번호를 그냥 SHA-256으로 해시한 것은 데이터베이스 열에서 어떻게 보이든 보호가 아니라 취약점입니다.
계산한 해시를 파일을 내려받은 바로 그 페이지에 공개된 해시와 비교하는 것은 생각보다 증명하는 것이 적습니다. 파일을 바꿔치기할 수 있는 사람이라면 옆의 숫자도 바꿀 수 있기 때문입니다. 체크섬은 서명된 릴리스, 별도의 경로, 직접 미리 기록해 둔 값처럼 다른 곳에서 왔을 때 가장 가치가 있습니다.
다른 작업이 필요할 때
명령줄에서는 한 단어면 됩니다. macOS와 Linux에서는 shasum -a 256 file, Windows에서는 certutil -hashfile file SHA256, 오래된 체크섬이 공개된 경우에는 md5sum이나 sha1sum을 쓰세요. 이 도구들은 파일을 통째로 불러오지 않고 스트리밍하므로 크기 제한이 없습니다. 수백 MB가 넘는 파일에서는 이것이 진짜 차이입니다. 파일 전체를 메모리에 올리는 페이지는 그냥 실패하기 때문입니다.
릴리스가 단지 온전한지가 아니라 진짜인지 확인하려면 해시만으로는 맞지 않는 도구입니다. GPG 서명, 즉 gpg --verify file.sig file은 누가 파일을 만들었는지 증명하며, 이는 체크섬이 답할 수 없는 질문입니다. 제대로 된 프로젝트는 대부분 둘 다 공개하며, 중요한 것은 서명입니다.
자주 묻는 질문
제 파일이 어딘가에 저장되나요?
아니요. 파일은 HTTPS를 처리하는 것과 같은 내장 암호화 기능으로 해시합니다. 아무것도 저장하지 않으므로 용량 제한도, 연결을 기다릴 일도 없습니다.
용량 제한이 있나요?
고정된 용량 한도가 아니라 사용 가능한 메모리가 한계입니다. 브라우저의 암호화 기능은 파일을 조각으로 나눠 해시할 방법이 없고 파일 전체를 한꺼번에 메모리에 올려야 하므로, DVD 이미지처럼 매우 큰 파일은 그만큼 담을 수 없는 컴퓨터에서 실패할 수 있습니다. 일반 컴퓨터에서는 수백 MB까지 문제없습니다. 큰 파일이 실패했다면 바로 그 한계에 걸린 것이며, 페이지가 멈추지 않고 그렇다고 알려 드립니다.
어떤 해시를 써야 하나요?
새로 시작한다면 SHA-256입니다. 현재의 기본값이며, 소프트웨어 체크섬, 컨테이너 다이제스트, 블록체인 시스템이 쓰는 것이고, 알려진 약점이 없습니다. MD5나 SHA-1은 오래된 공개 체크섬과 대조하거나, 레거시 시스템이거나, 객체를 SHA-1로 식별하는 Git처럼 다른 무언가가 요구할 때만 쓰세요. 더 긴 다이제스트가 특별히 필요하면 SHA-512를 쓰세요. 64비트 컴퓨터에서는 SHA-256보다 느린 게 아니라 오히려 빠른 경우가 많습니다.
비밀번호를 해시하는 데 써도 되나요?
할 수는 있지만 결과를 저장해서는 안 됩니다. 이 분야에서 가장 흔한 실수이므로 분명히 말씀드립니다. MD5, SHA-1, SHA-256은 모두 비밀번호에 맞지 않으며, SHA-256이 암호학적으로 강하다는 것도 도움이 되지 않습니다. 문제는 이 함수들이 원래 ‘빠르게’ 설계되었다는 점입니다. 최신 그래픽 카드는 1초에 SHA-256 해시를 수십억 개 계산하므로, SHA-256 비밀번호 해시가 담긴 데이터베이스가 유출되면 엄청난 속도로 뚫립니다. 비밀번호에는 일부러 느리게 만든, 솔트를 쓰는 전용 함수가 필요합니다. bcrypt, scrypt, Argon2입니다. 제대로 된 프레임워크라면 모두 하나씩 내장하고 있습니다.
MD5는 왜 취약하다고 표시되나요?
이제 누구나 일반 하드웨어로 몇 초 만에 같은 MD5 해시를 가진 서로 다른 두 파일을 만들 수 있기 때문입니다. 2004년부터 그랬으며, 서로 다른 계약서를 보여 주는 두 PDF, 하나가 악성 코드인 두 실행 파일처럼 실제 피해로 이어지는 방식으로 시연되었습니다. 따라서 MD5로는 파일이 기대한 그 파일임을 증명할 수 없습니다. 의도적으로 위조한 파일도 일치할 수 있습니다. 잘못된 다운로드나 잘린 복사본 같은 우발적 손상을 찾는 데는 여전히 충분히 쓸 만하며, 공개된 MD5 체크섬 대부분이 실제로 그 용도입니다. 보안 용도로는 절대 쓰면 안 됩니다.
SHA-1은 왜 취약하다고 표시되나요?
같은 이유이며, 더 최근의 일입니다. 2017년 Google과 CWI가 같은 SHA-1 해시를 가진 서로 다른 두 PDF를 만들었고, 2020년에는 서명을 위조할 수 있을 만큼 공격 비용이 낮아졌습니다. 브라우저는 몇 년 전에 SHA-1 인증서를 받아들이지 않게 되었고, Git도 SHA-1에서 옮겨 가는 중입니다. 오늘 알고리즘을 고른다면 SHA-256을 고르세요.
다운로드한 파일은 어떻게 검증하나요?
다운로드한 파일을 끌어다 놓고, 파일을 받은 사이트의 체크섬을 비교 칸에 붙여 넣으세요. 일치하면 파일이 온전하게 도착했으며 공개된 그 파일입니다. 일치하지 않으면 삭제하고 다시 다운로드하세요. 주의할 점이 두 가지 있습니다. 체크섬은 파일을 받은 곳이 아니라 공식 출처에서 가져오세요. 그리고 체크섬은 파일이 그 페이지에 공개된 것과 일치한다는 것만 증명한다는 점을 기억하세요. 페이지 자체가 해킹되었다면 둘 다 일치합니다.
해시는 정확하게 계산되나요?
SHA-1, SHA-256, SHA-384, SHA-512는 HTTPS를 처리하는 것과 같은 코드인 브라우저 자체의 Web Crypto 구현에서 나옵니다. MD5는 깨진 알고리즘이라 일부러 Web Crypto에 포함되지 않았으므로, 여기서 RFC 1321을 바탕으로 직접 구현했고 그 문서에 공개된 테스트 벡터로 검증했습니다.
참고: MD5와 SHA-1이 있는 이유는 안전해서가 아니라 실제 파일과 오래된 시스템이 여전히 쓰기 때문입니다. 둘 다 보안 관련 용도로는 깨진 알고리즘이며 체크섬으로만 쓸모가 있습니다. Web Crypto에는 점진적 해시 계산 기능이 없어 파일 전체를 메모리에 올리므로, 매우 큰 파일은 스트리밍되지 않고 실패합니다.
내 웹사이트에 이 도구 넣기
블로그, 수업 페이지, 도움말 글 어디에나 무료로 넣을 수 있습니다. 코드 한 줄만 붙여 넣으면 방문자가 페이지에서 바로 사용할 수 있습니다.