해시 생성기: MD5, SHA-1, SHA-256, SHA-512, HMAC
텍스트나 파일의 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시 또는 HMAC을 브라우저에서 계산하고 기대 체크섬과 비교합니다.
공백과 줄바꿈을 포함해 입력한 그대로 해시합니다. 이 입력란의 줄바꿈은 LF로 해시합니다.
여기에 파일을 끌어다 놓거나 선택하세요
선택한 파일이 없습니다.
이 파일은 500MB보다 큽니다. 파일 전체를 메모리에 불러오므로 브라우저의 메모리가 부족해지거나 느려질 수 있습니다.
결과
텍스트를 입력하거나 파일을 선택하면 해시가 표시됩니다.
16진수 값은 대소문자를 구분하지 않고 비교하며, Base64 값은 정확히 일치해야 합니다.
참고
- MD5와 SHA-1은 알려진 충돌 공격이 있으므로 보안 용도로 쓰면 안 됩니다. 다운로드한 파일을 공개된 체크섬과 비교하는 것처럼 보안과 무관한 확인에만 쓰세요.
- 해시는 암호화가 아닙니다. 이 도구는 해시를 원래 텍스트나 파일로 되돌릴 수 없습니다.
- 비밀번호를 저장할 때 일반 해시를 그대로 쓰지 마세요. Argon2, scrypt, bcrypt 같은 비밀번호 전용 해싱 방식을 쓰세요.
- 해시는 바이트를 기준으로 계산하므로, 같은 텍스트라도 줄바꿈 방식(CRLF 또는 LF), 문자 인코딩, 여분의 공백이 다르면 다른 해시가 나옵니다.
- HMAC은 해시와 비밀 키를 결합한 것입니다. 여기서는 HMAC-MD5를 제공하지 않습니다.
- 텍스트와 파일은 브라우저에서 처리되며 LeedyBox로 전송되지 않습니다. 파일 전체를 메모리로 읽기 때문에 아주 큰 파일은 느릴 수 있습니다.
사용 방법
- "입력"에서 직접 입력하거나 붙여넣은 텍스트를 해시하려면 "텍스트"를, 기기에 있는 파일을 해시하려면 "파일"을 선택하세요.
- 파일은 선택하거나 상자에 끌어다 놓은 다음 "해시 계산"을 누르세요. 그 뒤에 "HMAC 모드"나 키를 바꾸면 버튼을 다시 눌러야 합니다.
- "출력 형식"에서 16진수 소문자, 16진수 대문자, Base64 중 하나를 고르세요. 형식을 바꾸면 같은 결과를 다르게 표기할 뿐이므로 다시 계산하지 않습니다.
- 일반 해시 대신 HMAC을 계산하려면 "HMAC 모드"를 체크하고 나타나는 입력란에 비밀 키를 입력하세요. HMAC-MD5는 제공하지 않으므로 MD5 행에는 "HMAC에서는 사용할 수 없음"이 표시됩니다.
- 다운로드한 파일을 확인하려면 공개된 값을 "기대 체크섬 (선택)"에 붙여넣으세요. 계산된 모든 결과와 비교하며, 일치하는 행에는 "일치" 표시가 붙습니다.
자주 묻는 질문
sha256sum이나 다른 도구와 해시가 다르게 나오는 이유는 무엇인가요?
텍스트 입력란은 입력한 문자를 그대로 해시하므로 작은 차이도 결과를 바꿉니다. 흔한 원인은 끝의 줄바꿈으로, echo hello | sha256sum은 "hello" 뒤에 줄바꿈을 붙여 해시하므로 "hello"만 해시한 SHA-256과 다르고, printf hello | sha256sum은 줄바꿈을 붙이지 않습니다. 겉보기에 같은 문자도 다르게 저장될 수 있는데, 예를 들어 é는 하나의 코드 포인트일 수도 있고 e 뒤에 결합용 악센트가 붙은 형태일 수도 있습니다. 텍스트 입력란은 텍스트를 UTF-8로 인코딩하고 줄바꿈을 LF로 해시하므로, 파일의 바이트를 그대로 해시하려면 내용을 붙여넣지 말고 "파일"을 사용하세요.
공개된 체크섬이 맞는데 왜 일치하지 않는다고 나오나요?
해시 값만 붙여넣으세요. 비교 전에 공백, 탭, 줄바꿈을 제거하므로 체크섬 파일의 한 줄 전체를 붙여넣으면 파일 이름이 값의 일부가 되고, sha256: 같은 접두사가 있어도 일치하지 않습니다. 계산된 모든 알고리즘과 비교하므로 알고리즘을 따로 고를 필요는 없습니다. 값만 붙여넣었는데도 일치하지 않는다면 "HMAC 모드"가 꺼져 있는지, 체크섬이 MD5, SHA-1, SHA-256, SHA-384, SHA-512 중 하나인지 확인하세요. SHA-3나 BLAKE2 같은 다른 알고리즘은 여기서 계산하지 않습니다. 그래도 일치하지 않는다면 다른 버전이거나 다운로드가 덜 된 경우처럼 파일이 체크섬을 만든 파일과 다를 가능성이 높습니다.
결과가 e3b0c442나 d41d8cd9로 시작하는 것은 무슨 뜻인가요?
16진수로 나타낸 빈 입력(0바이트)의 해시입니다. SHA-256 값은 e3b0c442로 시작해 b855로 끝나고, MD5 값은 d41d8cd98f00b204e9800998ecf8427e입니다. "HMAC 모드"가 꺼져 있을 때 텍스트 입력란을 비우거나 0바이트 파일을 선택하면 이 값이 나옵니다. 내용이 있어야 할 데이터에 대해 직접 만든 프로그램이 이 값을 낸다면 빈 문자열이나 빈 파일을 해시했을 가능성이 높습니다.
HMAC 모드로 웹훅이나 API 서명을 확인할 수 있나요?
서명이 SHA-1, SHA-256, SHA-384, SHA-512를 쓰는 HMAC이라면 많은 경우 가능합니다. HMAC-MD5는 제공하지 않습니다. "HMAC 모드"를 체크하고 서명용 비밀 키를 입력한 다음, 요청 본문을 입력으로 넣고 서명을 sha256= 같은 접두사 없이 "기대 체크섬 (선택)"에 붙여넣으세요. 16진수와 Base64 서명을 모두 인식합니다. 입력은 서명된 바이트와 같아야 하므로 형식을 바꾼 JSON 본문은 일치하지 않으며, CRLF 줄바꿈이 있는 본문은 파일로 저장해 "파일"로 해시해야 합니다. 타임스탬프와 구분 문자를 본문 앞에 붙이는 것처럼 본문 외의 값도 함께 서명하는 서비스가 많으므로, 정확히 무엇을 서명하는지 서비스 문서를 확인하세요.
비밀 키가 16진수나 Base64로 주어졌습니다. 사용할 수 있나요?
서비스가 키 문자열을 그대로 사용하는 경우에만 가능합니다. "비밀 키 (UTF-8)" 입력란은 입력한 문자의 UTF-8 바이트를 사용하며 16진수나 Base64를 디코딩하지 않으므로, 서비스가 서명 전에 키를 디코딩한다면 여기서 계산한 HMAC과 일치하지 않습니다. 입력란 앞뒤의 공백도 키의 일부로 처리됩니다.
하위 리소스 무결성(SRI) 해시는 어떻게 만드나요?
"파일"을 선택하고 스크립트나 스타일시트 파일을 고른 뒤, "HMAC 모드"가 꺼져 있는지 확인하고 "해시 계산"을 누른 다음 "출력 형식"을 "Base64"로 바꾸세요. SHA-384 값 앞에 sha384-를 붙이면 integrity 속성 값이 되며, sha256-과 sha512-도 같은 방식입니다. 파일은 브라우저가 내려받는 파일과 바이트 단위로 같아야 하며, 다르면 브라우저가 그 파일을 사용하지 않습니다. 다른 출처(origin)에서 불러오는 파일에는 crossorigin 속성도 필요하고, 그 파일을 제공하는 서버가 CORS를 허용해야 합니다.
16진수 출력과 Base64 출력은 무엇이 다른가요?
둘 다 같은 다이제스트를 나타냅니다. 16진수는 바이트마다 두 글자를 써서 SHA-256이 64자이며 sha256sum 같은 도구가 출력하는 형식이고, Base64는 더 짧아서 SHA-256이 44자입니다. Base64 출력은 +, /와 = 패딩을 쓰는 표준 알파벳이며 -와 _를 쓰는 URL-safe 변형이 아니므로, URL-safe 형식의 값이나 = 패딩을 지운 값은 비교에서 일치하지 않을 수 있습니다.