해시/암호화

HMAC Generator

비밀 키로 텍스트나 파일의 HMAC(Hash-based Message Authentication Code)을 계산합니다 — MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160 8개 알고리즘을 한 번에.

HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

이 도구에 대한 아티클: HMAC: 키가 있는 해시는 일반 해시와 어떻게 다른가

자주 묻는 질문

HMAC과 일반 해시의 차이는 무엇인가요?

일반 해시는 키 없이 데이터의 지문만 계산하지만, HMAC은 비밀 키를 함께 사용해 데이터의 무결성뿐 아니라 인증(그 키를 아는 사람이 만들었는지)까지 증명합니다.

어떤 알고리즘과 키 길이를 선택해야 하나요?

HMAC-SHA-256 이상을 권장하며, 키는 해당 해시 함수의 블록 크기(예: SHA-256은 64바이트) 이상으로 무작위 생성하는 것이 안전합니다. MD5나 SHA-1 기반 HMAC은 새로운 용도에는 피하는 것이 좋습니다.

비밀 키는 서버로 전송되나요?

아니요. 입력한 키와 데이터는 브라우저 안에서만 처리되며 어디로도 업로드되지 않습니다.

HMAC을 일반 동등 연산자로 비교하면 안 되는 이유는 무엇인가요?

일반 문자열 비교는 첫 번째로 다른 부분에서 멈추기 때문에, 비교에 걸리는 시간이 공격자에게 앞부분 몇 글자를 올바르게 맞혔는지 알려줍니다(timing attack). PHP의 hash_equals 같은 상수 시간 비교 함수가 필요합니다.

동일한 키를 여러 용도에 재사용해도 되나요?

권장하지 않습니다. 같은 비밀 키를 웹훅 서명과 다른 용도에 함께 사용하면, 한 시스템이 침해당했을 때 다른 시스템도 함께 침해됩니다 — 각 용도마다 별도의 키를 생성하는 것이 좋습니다.

아티클: 해시/암호화

Hash Generator: MD5, SHA-1, SHA-256은 서로 어떻게 다른가

MD5가 아직도 파일 무결성 검증에는 쓰이지만 비밀번호에는 쓰이지 않는 이유.

Checksum Verifier: 파일이 손상되지 않았는지 확인하는 방법

일치하는 체크섬이 파일의 무결성은 확인해주지만 누가 만들었는지는 확인해주지 않는 이유.

Bcrypt: 비밀번호를 빠르게가 아니라 느리게 해시하는 이유

빠른 SHA-256이 비밀번호에는 나쁜 선택이고, 느린 bcrypt가 올바른 선택인 이유.

UUID: 거의 절대 중복되지 않는 식별자는 어떻게 만들어지는가

UUID v4를 수백만 대의 기계에서 충돌 위험 없이 독립적으로 생성할 수 있는 이유.

비밀번호 생성기: 비밀번호를 진짜로 강하게 만드는 것

사전 단어로 만든 긴 비밀번호가 기호와 숫자가 든 짧은 비밀번호보다 강한 이유.

AES: 대칭 암호화는 어떻게 동작하는가

AES에서 같은 키가 데이터를 암호화하고 복호화하는 이유, 그리고 이것이 비대칭 암호화와 다른 점.

Argon2: 이 알고리즘이 비밀번호 해싱 경진대회에서 우승한 이유

Argon2가 오래된 비밀번호 해싱 알고리즘보다 GPU를 이용한 공격을 더 잘 방어하는 방법.

Scrypt: 이 알고리즘이 왜 그렇게 많은 메모리를 필요로 하는가

scrypt가 ASIC 장치에서의 크래킹을 어렵게 만들기 위해 일부러 많은 메모리를 요구하는 이유.

TOTP: 인증 앱의 일회용 코드는 어떻게 작동하는가

Google Authenticator의 코드가 인터넷 없이 작동하고 시간만으로 서버와 동기화되는 이유.

PBKDF2: 가장 오래된 키 스트레칭 표준

PBKDF2의 권장 반복 횟수가 매년 늘어나는 이유.

X.509: SSL 인증서 안에는 무엇이 들어있는가

초록색 자물쇠를 보여주기 전에 브라우저가 사이트 인증서에서 정확히 무엇을 확인하는지.

PGP: 공개 키와 개인 키 암호화는 어떻게 작동하는가

PGP 공개 키는 자유롭게 공유할 수 있지만 개인 키는 절대 공유해서는 안 되는 이유.