해시 생성 (SHA·MD5)
브라우저 안에서만 처리됩니다. 입력한 내용과 선택한 파일은 서버로 전송되지 않습니다.
2004년에 깨졌습니다. 내려받은 파일이 깨졌는지 확인하는 용도로만 쓰세요. 2017년에 충돌이 실제로 만들어졌습니다. git 커밋 해시나 옛 체크섬을 확인할 때만 쓰세요.
해시
텍스트를 입력하면 해시가 나옵니다.
사용법
- 텍스트와 파일 중 무엇의 해시를 구할지 고르고, 아래에서 알고리즘을 하나 이상 켭니다. 기본은 SHA-256 입니다.
- 텍스트는 입력하는 대로 계산되고, 파일은 끌어다 놓으면 조금씩 읽으며 진행률을 보여 줍니다. 오래 걸리면 취소할 수 있습니다.
- 배포처가 알려 준 체크섬이 있으면 "체크섬 대조" 칸에 붙여넣으세요. 대소문자와 `sha256sum` 출력 형식을 알아서 처리하고 일치 여부를 표시합니다.
자주 묻는 질문
MD5 도 있나요? 써도 되나요?
있습니다. 다만 MD5 는 2004년에 충돌을 만드는 방법이 나왔고 지금은 노트북으로 몇 초 만에 만들 수 있어서, 누군가 파일을 바꿔치기했는지 확인하는 용도로는 쓸 수 없습니다. 그럼에도 넣은 이유는 국내 배포 페이지가 아직 MD5 체크섬만 주는 곳이 많고, "내려받다가 파일이 깨졌는지" 확인하는 데는 여전히 쓸모가 있기 때문입니다. 같은 이유로 SHA-1 도 넣었습니다(SHA-1 역시 2017년에 충돌이 실제로 만들어졌습니다). 보안이 걸린 일이라면 SHA-256 이상을 쓰세요.
아주 큰 파일도 되나요? 얼마나 걸리나요?
파일을 통째로 메모리에 올리지 않고 조금씩 읽어 계산하므로 크기 제한이 없습니다. 계산은 별도 스레드(Web Worker)에서 하기 때문에 도는 동안에도 화면이 멈추지 않고 취소할 수 있습니다. 속도는 알고리즘에 따라 다릅니다 — 참고로 개발 기기에서 SHA-256 은 초당 약 120 MB, SHA-512 는 약 24 MB 였습니다(SHA-512 는 64비트 연산을 쓰는데 자바스크립트에 64비트 정수가 없어 32비트 두 개로 흉내 내야 해서 느립니다). 2 GB 파일이면 SHA-256 은 20초 안팎, SHA-512 는 1분 이상 걸린다고 보면 됩니다.
파일이 서버로 올라가나요?
올라가지 않습니다. 파일을 읽고 해시를 계산하는 일이 전부 브라우저 안에서 일어납니다. 업로드하는 경로 자체가 이 페이지에 없습니다.
crypto.subtle 이 없는 환경에서는 어떻게 되나요?
브라우저의 crypto.subtle 은 보안 컨텍스트(HTTPS 또는 localhost)에서만 쓸 수 있습니다. `http://` 로 접속하면 그 객체 자체가 없습니다. 이 도구는 그런 경우에도 동작합니다 — 같은 값을 내는 자체 구현으로 계산하고 화면에 그렇게 알립니다. 텍스트 해시는 가능하면 브라우저의 crypto.subtle 을 쓰고, 파일과 MD5 는 언제나 자체 구현을 씁니다(crypto.subtle 은 데이터를 한 번에 다 받는 API 라 조금씩 읽을 수 없고, MD5 는 아예 목록에 없습니다). 두 경로가 같은 값을 낸다는 것은 테스트에서 길이를 0부터 블록 경계 앞뒤까지 훑어 가며 대조해 두었습니다.
같은 파일인데 다른 사이트와 값이 다르게 나옵니다.
먼저 알고리즘이 같은지 확인하세요(MD5 와 SHA-1 은 길이가 32자와 40자로 다릅니다). 텍스트 해시라면 줄바꿈이 원인일 때가 많습니다 — 윈도우에서 만든 텍스트는 줄 끝이 CRLF 라 LF 로 저장한 같은 내용과 해시가 다릅니다. 이 도구는 입력한 글자를 UTF-8 로 바꾼 바이트를 그대로 해시하며, 줄바꿈을 임의로 바꾸지 않습니다.