| 알고리즘 | 해시값 |
|---|
이 도구를 쓰는 법
1. 문자열 해시
텍스트 탭에 값을 입력하면 다섯 가지 해시가 동시에 갱신됩니다. 입력은 UTF-8로 인코딩해 계산하므로, 자바의
"abc".getBytes(StandardCharsets.UTF_8) 를 MessageDigest 에 넣은 결과와 같습니다.
한글이 섞였는데 값이 다르다면 상대 쪽이 EUC-KR 로 인코딩했을 가능성이 큽니다.
2. 파일 체크섬 검증
배포 파일이 온전히 내려받아졌는지 확인할 때 씁니다. 파일 탭에 파일을 끌어다 놓고, 배포처가 공개한 해시를 해시 비교 칸에 붙여 넣으면 일치 여부를 바로 알려 줍니다. 대소문자와 앞뒤 공백은 무시합니다.
3. 어떤 알고리즘을 골라야 하나
- SHA-256 — 기본값으로 삼으면 되는 선택입니다. 무결성 검증, 서명, 블록체인에 두루 쓰입니다.
- SHA-512 — 64비트 환경에서는 SHA-256보다 오히려 빠른 경우가 많습니다. 더 긴 값이 필요할 때.
- MD5 · SHA-1 — 충돌 공격이 실증됐습니다 보안 용도로 쓰면 안 됩니다. 다만 캐시 키, 중복 파일 찾기처럼 악의적 입력이 없는 곳에서는 여전히 쓰이고, 배포처가 MD5 만 공개한 경우도 있어 남겨 두었습니다.
자주 묻는 것
해시값을 복호화할 수 있나요?
없습니다. 해시는 단방향이라 원문으로 되돌리는 연산 자체가 존재하지 않습니다. 이른바 "MD5 복호화" 사이트는 미리 계산해 둔 값을 사전에서 찾아 주는 것이라, 흔한 문자열만 맞습니다.
비밀번호를 MD5나 SHA-256으로 저장해도 되나요?
안 됩니다. 두 함수는 빠르게 계산되도록 설계돼 있어서, 그 속도가 그대로 공격자의 대입 속도가 됩니다.
비밀번호에는 bcrypt, scrypt, Argon2 처럼 의도적으로 느린 함수를 쓰고
사용자마다 다른 솔트를 붙입니다.
입력한 값이 서버로 전송되나요?
전송되지 않습니다. 계산은 전부 브라우저의 자바스크립트가 하며 네트워크 요청이 발생하지 않습니다. 개발자 도구의 네트워크 탭으로 직접 확인해 보셔도 됩니다.
같은 문자열인데 다른 사이트와 값이 다릅니다.
대개 줄바꿈이나 끝 공백 때문입니다. 해시는 1바이트만 달라도 값이 전부 바뀝니다. 텍스트 탭 아래의 바이트 수 표시로 눈에 보이지 않는 문자가 들어갔는지 확인해 보세요.
관련 도구: URL 인코더/디코더 · JSON 포맷터 · JWT 디코더
해시 생성기 사용 안내
텍스트나 파일의 MD5, SHA-1, SHA-256, SHA-384, SHA-512 해시값을 한 번에 계산합니다. 브라우저에서만 처리하며 입력값을 서버로 보내지 않습니다. 파일 무결성(체크섬) 검증도 지원합니다.
텍스트나 지원하는 파일 입력을 선택하고 해시 알고리즘을 정하세요. 체크섬 비교 시 입력 인코딩, 줄바꿈과 알고리즘이 같은지 확인하세요.
어떻게 구현했나
SHA 계열은 브라우저에 내장된 Web Crypto(crypto.subtle.digest)를 씁니다. 표준 구현이라 직접 만든 코드보다 빠르고 검증돼 있습니다.
MD5만 직접 구현했습니다. 안전하지 않다는 이유로 Web Crypto에서 빠졌기 때문입니다. 파일 체크섬 확인에는 여전히 쓰이므로 RFC 1321을 그대로 따랐습니다 — 0x80 패딩, 리틀엔디언 8바이트 길이, 64라운드 상수는 sin(i+1)의 절댓값에서 만듭니다.
텍스트와 파일이 같은 경로를 지납니다. 둘 다 바이트 배열(Uint8Array)로 바꾼 뒤 같은 함수에 넣습니다. 그래서 파일을 업로드할 필요가 없고, 같은 내용이면 텍스트로 넣든 파일로 넣든 값이 같습니다.
텍스트는 UTF-8로 인코딩해 계산합니다. 다른 사이트와 값이 다르다면 대개 인코딩이 아니라 줄바꿈이나 끝의 공백 차이입니다.
자주 묻는 질문
입력한 데이터는 어디에서 처리하나요?
이 도구의 입력 데이터는 브라우저에서 처리하며 도구 기능을 위해 서버로 업로드하지 않습니다. 결과를 공유하기 전 민감한 정보가 없는지 확인하세요.
결과가 예상과 다르면 어떻게 하나요?
입력 형식, 문자 인코딩과 선택한 옵션을 확인하세요. 각 도구가 안내하는 지원 범위와 제한을 확인하고, 원본 데이터를 보관한 상태에서 결과를 검토하세요.