Hash / HMAC

MD5, SHA-1/256/384/512, HMAC을 브라우저에서 바로 계산

텍스트 또는 hex/base64 바이너리 입력에 대해 다이제스트와 HMAC을 실시간으로 계산합니다. 파일 무결성 확인, 서버 서명 검증, 테스트용 해시 생성에 쓰기 좋고, 결과는 hex 또는 base64로 복사할 수 있습니다.

어떤 알고리즘이 들어 있나

  • MD5 — 체크섬 용도. 빠르지만 암호학적으로 안전하지 않으므로 보안 목적으로 사용하지 마세요.
  • SHA-1 — Git 커밋 ID 비교, 일부 레거시 서명 확인용. 새 시스템에는 권장하지 않습니다.
  • SHA-256 / SHA-384 / SHA-512 — 2026년 기준 표준 해시. 무결성, 서명, 식별자 생성에 모두 적합합니다.
  • HMAC-SHA-1/256/384/512 — 공유 비밀 키 기반 인증 코드. 웹훅 서명, API 요청 인증에 쓰입니다.

HMAC을 쓸 때 주의할 점

HMAC 계산은 단순히 `해시(키 + 메시지)`가 아닙니다. 키가 블록 사이즈보다 길면 먼저 해시하고, 내부/외부 패딩을 XOR한 뒤 두 번 해시하는 공식을 따릅니다. 같은 키와 메시지를 써도 서버와 클라이언트의 인코딩이 어긋나면 값이 달라집니다.

실패의 대표 원인 세 가지: (1) 키를 UTF-8로 보내야 하는데 base64 디코드를 잊음, (2) 메시지의 줄바꿈이 `\n` vs `\r\n`으로 다름, (3) 결과를 hex로 비교하는데 서버는 base64를 반환. 이 도구에서는 키/메시지/출력 인코딩을 각각 지정해 어느 조합이 서버와 일치하는지 빠르게 확인할 수 있습니다.

자주 쓰는 조합

AWS Signature v4 스타일

HMAC-SHA-256, 키: 서명 파생 키, 메시지: canonical request, 출력: hex

GitHub Webhook

HMAC-SHA-256, 키: 저장소 secret, 메시지: raw request body, 출력: 'sha256=' + hex

파일 무결성

SHA-256 다이제스트, 입력: UTF-8 텍스트 또는 파일 바이트, 출력: hex

자주 묻는 질문

Q. MD5로 비밀번호를 해시해도 되나요? 절대 안 됩니다. 비밀번호에는 bcrypt, argon2, scrypt 같은 메모리 하드 알고리즘을 사용해야 합니다.

Q. SHA-256과 HMAC-SHA-256은 같은 것 아닌가요? 다릅니다. SHA-256은 키 없이 데이터를 요약하고, HMAC은 공유 키를 묶어 위조를 방지합니다.

Q. 바이너리 파일을 해시할 수 있나요? 현재는 텍스트 입력을 hex나 base64로 붙여 넣는 방식만 지원합니다. 파일 업로드는 지원하지 않습니다.

함께 쓰기 좋은 도구

같은 워크플로에서 바로 이어 쓸 수 있는 JSON2Class 도구를 연결해 두었습니다.

JSON to Java

Java DTO와 validation 중심으로 JSON 응답 모델을 정리합니다.

JSON to Kotlin

nullable 규칙과 data class 구조를 빠르게 검토합니다.

JSON Formatter

샘플 JSON을 정리한 뒤 변환기에 다시 넣어 타입 추론을 안정화합니다.