Skip to content

HMAC 생성기 및 서명 검증 도구

무료 온라인 HMAC 생성·검증 도구. Text/Hex/Base64 키로 HMAC-SHA256/SHA1/SHA384/SHA512를 Hex/Base64/Base64URL로 출력. 100% 브라우저 실행, 키 유출 없음.

트래킹 없음 브라우저 실행 무료
100% 브라우저에서 실행 — 메시지와 비밀 키는 기기를 벗어나지 않습니다.
생성된 HMAC

HMAC이란 무엇인가요?

HMAC(해시 기반 메시지 인증 코드)은 메시지가 변경되지 않았고 진정하다는 것, 즉 공유 비밀 키를 보유한 사람이 생성했음을 증명하는 짧고 고정된 길이의 태그입니다. RFC 2104와 FIPS 198-1에 정의되어 있으며, HMAC은 임의의 암호 해시 함수를 비밀 키와 특정 중첩 구조로 결합합니다. 이는 HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m))로 표기됩니다. 내부 해시는 키를 메시지에 묶고, 외부 해시는 그 결과를 감쌉니다. 바로 이것이 원시 SHA-1과 SHA-256 함수에 영향을 주는 길이 확장 공격에 HMAC이 저항하게 만드는 요소입니다.

HMAC은 현대 웹 인프라 곳곳에 있습니다. webhook에 서명해 수신된 요청이 정말 GitHub, Stripe, Slack 또는 Twilio에서 왔고 위조되지 않았음을 확인할 수 있게 합니다. API 요청에 서명해(AWS Signature Version 4는 HMAC-SHA256 위에 구축됩니다) 서버가 비밀번호를 회선으로 보내지 않고도 호출자를 인증할 수 있게 합니다. HS256의 S가 바로 이것입니다. HS256으로 서명된 JWT는 헤더와 페이로드에 대한 HMAC-SHA256을 담고 있으며, JWT 인코더로 확인할 수 있습니다. 또한 TLS 키 파생(HKDF), 일회용 비밀번호 알고리즘(HOTP/TOTP), 수많은 내부 서비스의 메시지 무결성을 뒷받침합니다.

이 도구는 Web Crypto API의 crypto.subtle.sign('HMAC', ...)을 사용해 완전히 브라우저에서 HMAC을 계산합니다. 브라우저가 TLS 핸드셰이크 중에 사용하는 것과 동일한 프리미티브입니다. 여러분의 비밀 키와 메시지는 절대 업로드되지 않으므로 프로덕션 서명 시크릿에도 안전합니다. 동일한 시크릿을 원시 텍스트, hex 또는 base64로 표현할 수 있으므로 도구는 '키 인코딩'을 명시적으로 선택하게 하며, 제공업체마다 태그를 다른 형태로 기대하므로 Hex, Base64 또는 Base64URL로 출력할 수 있습니다. '검증' 탭에서는 수신한 서명을 확인할 수 있으며, 상수 시간 비교를 사용해 검사 자체가 타이밍 정보를 누출하지 않습니다.

const crypto = require('crypto');

// HMAC-SHA256 with a UTF-8 text key, hex output
const hmac = crypto
  .createHmac('sha256', 'my-secret-key')
  .update('Hello, World!')
  .digest('hex');

console.log(hmac);
// → 'cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699'

// Verify a signature in constant time
function verify(message, key, expectedHex) {
  const actual = crypto.createHmac('sha256', key).update(message).digest();
  const expected = Buffer.from(expectedHex, 'hex');
  return actual.length === expected.length &&
    crypto.timingSafeEqual(actual, expected);
}

주요 기능

하나의 도구로 생성과 검증

'생성' 탭에서 서명을 생성하거나, '검증' 탭에 '예상 HMAC'을 붙여넣어 수신된 webhook이나 토큰을 인증하세요. 검증은 상수 시간 비교를 사용하므로 결과가 타이밍 정보를 절대 누출하지 않습니다.

키 인코딩 선택

시크릿을 Text(UTF-8), 16진수 또는 Base64로 해석합니다. 이것은 다른 대부분의 도구가 생략하는 설정이며, 같은 키에 대해 두 시스템이 서로 다른 HMAC을 계산하는 가장 흔한 원인입니다.

세 가지 출력 인코딩

태그를 Hex(GitHub webhook, AWS), Base64(Stripe, Twilio, 많은 API) 또는 Base64URL(JWT 및 URL 안전 토큰)로 출력해 수동 변환 없이 연동에 맞춥니다.

네 가지 기본 알고리즘

기본 HMAC-SHA256에 더해 SHA-1, SHA-384, SHA-512. 모두 브라우저의 Web Crypto API에서 실행되므로 신뢰해야 할 JavaScript 암호 라이브러리도, 성능 저하도 없습니다.

100% 클라이언트 측 및 비공개

여러분의 비밀 키와 메시지는 완전히 브라우저에서 처리되며 어떤 서버로도 전송되지 않습니다. 네트워크 탭을 열면 외부로 나가는 요청이 0건임을 볼 수 있습니다. 프로덕션 서명 시크릿에도 안전합니다.

실시간 계산

메시지, 키, 인코딩 또는 알고리즘을 편집하면 HMAC이 즉시 다시 계산됩니다. '생성' 버튼 왕복이 없으므로 값이 서버의 것과 일치할 때까지 인코딩을 실험할 수 있습니다.

검증된 벡터 기반

출력은 공식 RFC 4231 HMAC 테스트 벡터로 검증되므로, 다이제스트가 OpenSSL, Node의 crypto 모듈, Python의 hmac 라이브러리가 생성하는 것과 일치한다고 신뢰할 수 있습니다.

HMAC 예시

빠른 시작 — HMAC-SHA256, Hex 출력

Hello, World!
cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699

키 "my-secret-key"(키 인코딩 = Text), 알고리즘 HMAC-SHA256, 출력 형식 = Hex일 때 메시지 "Hello, World!"는 cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699을 생성합니다. 이것은 Node의 crypto.createHmac('sha256', key).update(msg).digest('hex')가 반환하는 표준 64자 16진수 다이제스트입니다.

Stripe 방식 webhook 검증(Base64 출력)

{"id":42,"event":"user.created"}
Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs=

많은 webhook 제공업체는 서명을 Base64로 전송합니다. 키 "whsec_test_secret"(Text), HMAC-SHA256, 출력 형식 = Base64일 때 이 JSON 본문은 Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs=로 서명됩니다. 그 값을 '검증' 탭에 붙여넣어 요청을 처리하기 전에 정말 제공업체에서 온 것인지 확인하세요. HMAC은 내부적으로 당사의 SHA-256 해시 생성기와 동일한 프리미티브 위에서 실행되지만, 여러분의 비밀 키로 키를 적용합니다.

RFC 4231 참조 벡터

what do ya want for nothing?
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

이것은 공식 HMAC 테스트 벡터 문서인 RFC 4231의 테스트 케이스 2입니다. 키 "Jefe"(Text), HMAC-SHA256, Hex 출력일 때 메시지 "what do ya want for nothing?"는 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843을 반환합니다. 이 정확한 값과 일치하는 것이 HMAC 구현이 올바르다는 것을 증명하는 방법입니다.

더 긴 다이제스트를 위한 HMAC-SHA512

The quick brown fox
36f44b125a8a90639dc46733039571792e081e0fd8685ff746784b02ed14aa35629d562c7117cde4a701570551faa5a5e1b7ef1eb5c3bcd4cc1fdb8923fcf14e

알고리즘을 HMAC-SHA512로 전환하면 128자(512비트) 다이제스트를 얻습니다. 키 "key"(Text)와 Hex 출력일 때 "The quick brown fox"는 위 값을 생성합니다. SHA-512는 대부분의 64비트 하드웨어에서 SHA-256보다 빠르고 더 큰 출력을 제공하지만, 상호 운용성의 기본값은 여전히 SHA-256입니다.

HMAC 생성 및 검증 방법

  1. 1

    알고리즘 선택

    HMAC-SHA256(기본값이며 거의 모든 webhook, API, JWT에 적합한 선택)을 선택하거나, 이를 요구하는 시스템에 맞게 SHA-1, SHA-384, SHA-512로 전환하세요. 네 가지 모두 Web Crypto API를 통해 브라우저에서 기본적으로 실행됩니다.

  2. 2

    비밀 키 입력 및 인코딩 설정

    비밀 키를 입력하거나 붙여넣은 다음, 서버가 해석하는 방식에 맞게 '키 인코딩'을 설정하세요. 일반 문자열은 Text(UTF-8), 16진수 바이트열은 Hex, base64 시크릿은 Base64입니다. 이를 잘못 설정하는 것이 HMAC 불일치의 가장 큰 원인이므로 확실하지 않으면 세 가지 모두 시도하세요.

  3. 3

    메시지 입력

    서명하려는 정확한 바이트를 붙여넣으세요. webhook의 경우 재직렬화나 공백 변경 없이 바이트 단위 그대로의 원시 요청 본문입니다. HMAC은 편집에 따라 즉석에서 다시 계산되며 서버로 아무것도 전송되지 않습니다.

  4. 4

    출력 형식 선택 및 복사

    Hex(GitHub 방식), Base64(Stripe/AWS 방식), Base64URL(JWT 방식) 중 연동 대상이 기대하는 것에 맞게 선택한 다음 '복사'를 클릭해 서명을 가져오세요.

  5. 5

    기존 서명 검증

    '검증' 탭으로 전환해 헤더나 토큰의 '예상 HMAC'을 붙여넣으면, 도구가 계산한 서명이 일치하는지 상수 시간으로 확인합니다. 따라서 페이로드에 대해 행동하기 전에 인증할 수 있습니다.

흔한 HMAC 실수

키 인코딩 불일치(불일치의 가장 큰 원인)

동일한 시크릿은 원시 UTF-8 텍스트, hex 또는 base64로 읽을 수 있으며, 각 해석은 완전히 다른 키 바이트를 생성합니다. 따라서 여러분의 도구와 서버의 해석이 다르면 HMAC이 일치하지 않습니다. 제공업체가 hex나 base64 시크릿을 주면 문자열을 그대로 서명하지 말고 서명 전에 바이트로 디코딩해야 합니다. 서명 검증에 실패하면 먼저 세 가지 '키 인코딩' 옵션을 모두 시도하세요.

✗ 오류
// Server stored a base64 secret but you sign the literal string
createHmac('sha256', 'c2VjcmV0LWtleQ==').update(msg)
✓ 정상
// Decode the base64 secret to raw bytes first
createHmac('sha256', Buffer.from('c2VjcmV0LWtleQ==', 'base64')).update(msg)

출력 인코딩 불일치

HMAC은 원시 바이트이며, hex, base64, base64url은 같은 값의 서로 다른 텍스트 인코딩일 뿐입니다. 서버가 base64 서명을 보내는데 여러분이 그것을 hex 다이제스트와 비교하면, 기반 바이트가 동일하더라도 절대 일치하지 않습니다. '출력 형식'을 헤더나 토큰이 사용하는 것에 맞추세요.

✗ 오류
// Provider sends base64, you compare hex
expected = 'Cd2f7z...=' // base64
actual   = digest('hex') // hex — never matches
✓ 정상
// Produce the same encoding the provider uses
actual = digest('base64')

원시 본문 대신 재직렬화된 JSON에 서명

webhook 서명은 제공업체가 보낸 정확한 바이트를 대상으로 합니다. JSON을 파싱한 후 다시 문자열화하면 키 순서, 간격, 숫자 형식이 바뀌어 바이트가 달라지고 서명이 깨집니다. 항상 파싱 전에 캡처한 원시 요청 본문에 HMAC을 적용하세요.

✗ 오류
// Re-serialization changes the bytes
body = JSON.stringify(JSON.parse(rawBody))
verify(hmac(body))
✓ 정상
// Sign the raw bytes exactly as received
verify(hmac(rawBody))

상수 시간 비교 대신 == 사용

수신한 서명을 ==나 단순 문자열 동등성으로 비교하면 타이밍 정보가 누출됩니다. 비교가 처음으로 다른 바이트에서 멈추기 때문입니다. 여러 번의 시도를 거쳐 공격자는 유효한 태그를 복원할 수 있습니다. 검증할 때는 항상 상수 시간 동등성 검사를 사용하세요.

✗ 오류
if (received === computed) { /* trust */ }
✓ 정상
if (crypto.timingSafeEqual(receivedBuf, computedBuf)) { /* trust */ }

HMAC의 용도

webhook 서명 검증
GitHub, Stripe, Slack, Twilio 같은 제공업체는 여러분과만 공유하는 시크릿으로 요청 본문에 대한 HMAC을 사용해 각 webhook에 서명합니다. 태그를 다시 계산해 헤더(예: X-Hub-Signature-256)와 비교하여 행동하기 전에 이벤트가 진짜인지 확인하세요. '검증' 탭을 사용하면 일회용 코드를 작성하지 않고도 할 수 있습니다.
API 요청 서명
인증된 API는 종종 시크릿 자체를 보내는 대신 공유 시크릿으로 요청(메서드, 경로, 타임스탬프, 본문)을 HMAC 서명하도록 클라이언트에 요구합니다. AWS Signature Version 4가 대표적인 예입니다. 이 도구로 그러한 서명을 단계별로 재현하고 디버깅할 수 있습니다.
메시지 무결성 보장
서비스 간에 토큰, 쿠키 또는 메시지를 전달할 때 HMAC을 붙이면 수신자가 모든 변조를 탐지할 수 있습니다. 태그가 시크릿에 의존하므로 공격자는 데이터를 수정한 후에 다시 계산할 수 없습니다. 일반 체크섬과는 다릅니다.
JWT HS256 서명 이해
HS256으로 서명된 JWT는 base64url(header) + '.' + base64url(payload)를 HMAC-SHA256으로 서명하고 결과를 Base64URL로 출력한 것일 뿐입니다. 여기서 알고리즘을 SHA-256, 출력을 Base64URL로 설정하면 그 서명이 정확히 어떻게 생성되는지 볼 수 있으며, JWT 인코더에서 교차 확인할 수 있습니다.
일치하지 않는 서명 디버깅
HMAC이 서버의 것과 일치하지 않을 때, 이 도구는 원인을 분리하는 가장 빠른 방법입니다. 키를 Text, Hex, Base64로 시도하고, 출력을 Hex와 Base64 사이에서 전환하며, 정확한 원시 바이트에 서명하고 있는지 확인하세요. 모두 코드를 재배포하지 않고 할 수 있습니다.

HMAC 작동 원리

RFC 2104 구조
HMAC은 H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m))으로 정의되며, 여기서 ipad는 반복된 바이트 0x36, opad는 반복된 0x5c로, 둘 다 해시의 블록 크기까지 채워집니다. 블록 크기보다 긴 키는 먼저 해시되고, 더 짧은 키는 0으로 패딩됩니다. 이 2단계 중첩이 HMAC의 보안 증명을 제공하며, 기반 해시가 충돌 저항성을 갖지 않더라도 성립합니다.
키 적용 해시가 일반 해시보다 나은 이유
일반 해시는 데이터가 우발적으로 손상되지 않았다는 것만 증명합니다. 누구나 어떤 메시지(변조된 것 포함)에 대해서도 다시 계산할 수 있기 때문입니다. HMAC은 시크릿을 섞어 넣으므로 키 보유자만 유효한 태그를 생성할 수 있습니다. 이는 무결성만 있는 것을 무결성과 진정성으로 바꾸며, webhook과 서명된 요청이 실제로 필요로 하는 속성입니다.
길이 확장 저항성
맨 SHA-1, SHA-256, SHA-512는 Merkle–Damgård 해시로 길이 확장에 취약합니다. H(secret ‖ msg)가 주어지면 공격자는 시크릿을 모르고도 H(secret ‖ msg ‖ extra)를 계산할 수 있습니다. 순진한 '시크릿 접두사 MAC' 방식은 이로 인해 깨집니다. HMAC의 외부 해시가 이 공격을 무력화하며, 이것이 시크릿과 메시지를 함께 해시하는 대신 HMAC을 사용하는 주된 이유입니다.
SHA-256과 SHA-512 중 선택
HMAC-SHA256은 256비트(64 hex 문자) 태그를 생성하며 상호 운용성의 기본값입니다. 빠르고, 보편적이며, 어디서나 지원됩니다. HMAC-SHA512는 512비트(128 hex 문자) 태그를 생성하며, SHA-512가 64비트 워드를 사용하므로 64비트 CPU에서 종종 더 빠릅니다. 사양이나 상대 시스템이 SHA-512를 요구하지 않는 한 SHA-256을 선택하세요. 둘 다 인증에 안전합니다.
Web Crypto 구현
이 도구는 crypto.subtle.importKey를 호출해 키를 로드하고(Text, Hex 또는 Base64에서 디코딩), crypto.subtle.sign('HMAC', ...)으로 태그를 계산한 다음, 원시 바이트를 Hex, Base64 또는 Base64URL로 인코딩합니다. 이는 브라우저가 TLS에 사용하는 것과 동일한 기본적이고 감사된 구현으로, 속도를 위해 JavaScript 엔진 밖에서 실행됩니다.

HMAC 모범 사례

해시 출력 이상의 길이의 키 사용
HMAC-SHA256에는 최소 32 무작위 바이트(256비트)의 시크릿을, SHA-512에는 64바이트를 사용하세요. 짧거나 엔트로피가 낮은 키는 가장 약한 고리입니다. 키는 암호학적으로 안전한 무작위 소스에서 생성하세요. 절대 비밀번호나 예측 가능한 문자열을 사용하지 마세요.
태그는 항상 상수 시간으로 비교
서명은 ==나 문자열 동등성이 아니라 상수 시간 비교(Node의 crypto.timingSafeEqual, Python의 hmac.compare_digest)로 검증하세요. 순진한 비교는 처음으로 다른 바이트에서 일찍 반환하여, 공격자가 유효한 태그를 한 바이트씩 복원할 수 있는 타이밍을 누출합니다. 이 도구의 '검증' 탭은 이미 상수 시간으로 비교합니다.
비밀 키를 절대 로깅하거나 노출하지 않기
서명 시크릿을 로그, 오류 메시지, URL, 클라이언트 측 코드에서 배제하세요. 시크릿 관리자나 환경 변수에 저장하고, 주기적으로 교체하며, 각 연동을 각자의 키로 범위 지정하여 한 번의 유출이 모든 것을 위태롭게 하지 않도록 하세요.
HMAC-SHA256 이상을 우선하기
기본값은 HMAC-SHA256으로 하고, 상대가 요구하면 SHA-384나 SHA-512로 올리세요. 새 시스템에서 HMAC-SHA1은 피하고 HMAC-MD5는 절대 사용하지 마세요. HMAC이 맨 서명보다 약한 해시를 더 잘 견디더라도, 최신 해시에서 시작하면 가장 큰 여유를 얻습니다.
타임스탬프를 포함한 정확한 바이트에 서명
원시이며 변경되지 않은 페이로드에 서명하세요. JSON을 재직렬화하거나 공백을 다듬으면 바이트가 바뀌어 검증이 깨집니다. 요청 서명의 경우 서명 데이터에 타임스탬프나 nonce를 포함하고 오래된 서명을 거부하여 재전송 공격을 방지하세요.

HMAC 자주 묻는 질문

HMAC이란 무엇인가요?
HMAC(해시 기반 메시지 인증 코드)은 공유 비밀 키를 사용해 메시지의 무결성과 진정성을 모두 증명하는 방법입니다. RFC 2104가 정의한 특정 중첩 구조로 메시지와 비밀 키를 해시 함수(여기서는 SHA-1, SHA-256, SHA-384 또는 SHA-512)에 입력하면 고정 길이 태그를 얻습니다. 비밀 키를 아는 사람은 누구나 태그를 다시 계산해 메시지가 변조되지 않았고 키 보유자로부터 왔음을 확인할 수 있습니다. 이것은 webhook 서명, 서명된 API 요청, 그리고 HS256 계열 JWT 토큰 뒤에 있는 표준 메커니즘입니다.
HMAC은 SHA-256 같은 일반 해시와 어떻게 다른가요?
SHA-256 같은 일반 해시는 무결성만 증명합니다. 누구나 다시 계산할 수 있으므로 변조된 메시지에 일치하는 해시도 누구나 위조할 수 있습니다. HMAC은 비밀 키를 섞어 넣으므로 그 키를 보유한 당사자만 유효한 태그를 생성하거나 검증할 수 있습니다. 이는 무결성 위에 진정성을 더합니다. HMAC은 또한 중첩된 2단계 구조(키에서 파생된 pad로 내부 및 외부 해싱)를 사용해, 원시 SHA-1과 SHA-256에 영향을 주는 길이 확장 공격에 면역입니다. 요컨대, 우발적 손상을 탐지하려면 해시를, 여러분의 키를 모르는 공격자의 의도적 변조를 탐지하려면 HMAC을 사용하세요.
수신된 webhook 서명을 어떻게 검증하나요?
수신된 그대로의 원시 요청 본문을 가져오고(JSON을 다시 직렬화하지 마세요. 키를 재정렬하기만 해도 서명이 깨집니다), 제공업체와 동일한 알고리즘(보통 HMAC-SHA256)을 선택하고, 올바른 '키 인코딩'으로 서명 시크릿을 입력하고, '출력 형식'을 헤더에 맞게 설정합니다(GitHub의 sha256= 접두사에는 Hex, Stripe/Twilio 방식 헤더에는 Base64). 그런 다음 '검증' 탭을 열고 헤더의 서명(예: X-Hub-Signature-256)을 붙여넣으면 도구가 상수 시간 비교로 일치/불일치를 보고합니다. 일치할 때만 페이로드를 신뢰하세요.
내 서버는 어떤 키와 출력 인코딩을 사용하나요?
보편적인 답은 없습니다. 제공업체에 따라 다르며, 바로 그 때문에 이 도구는 둘 다 명시적 선택지로 노출합니다. 흔한 패턴은 다음과 같습니다. GitHub은 UTF-8 텍스트 시크릿과 소문자 hex 출력에 sha256= 접두사를 사용합니다. Stripe는 텍스트 시크릿과 base64를 사용합니다. AWS Signature V4는 파생된 바이너리 키와 hex를 사용합니다. 많은 내부 시스템은 base64 또는 hex 시크릿을 발급하며, 서명 전에 원시 바이트로 디코딩해야 합니다. HMAC이 일치하지 않으면 거의 항상 인코딩이 원인입니다. 같은 키를 Text, Hex, Base64로 시도해 서버가 기대하는 해석을 찾으세요.
HMAC-SHA256은 안전한가요?
네. HMAC-SHA256은 널리 안전하다고 여겨지며 메시지 인증의 권장 기본값입니다. 그 보안성은 HMAC 구조와 강력한 기반 해시에서 나오며, 맨 해시에 대한 충돌 공격이 존재하더라도 여전히 안전합니다. HMAC은 디지털 서명처럼 충돌 저항성에 의존하지 않기 때문입니다. 실제 위험은 알고리즘이 아니라 운영적인 것입니다. 약하거나 유출된 비밀 키, 키 로깅, 비상수 시간 비교 사용 등입니다. 길고 무작위인 키를 사용하고 태그를 상수 시간으로 비교하면 HMAC-SHA256은 충분히 버텨냅니다.
왜 여기에 HMAC-MD5나 HMAC-SHA-3이 없나요?
의도적인 설계입니다. 이 도구는 SHA-1, SHA-256, SHA-384, SHA-512만 노출합니다. 이들은 브라우저의 기본 Web Crypto API가 지원하는 해시 함수이므로, 추가 라이브러리 없이 모든 것을 빠르고 완전히 클라이언트 측에서 실행할 수 있습니다. HMAC-MD5는 MD5가 구식이고 새 시스템에서 사용해서는 안 되기 때문에 제외했습니다. HMAC-SHA-3은 Web Crypto가 SHA-3을 구현하지 않아 추가하려면 JavaScript polyfill을 포함해야 하므로 제외했습니다. 어쨌든 사실상 모든 최신 사용 사례에서 HMAC-SHA256이 올바른 선택입니다.
JWT에는 HS256(HMAC)과 RS256(RSA) 중 무엇을 써야 하나요?
HS256은 단일 공유 시크릿으로 HMAC-SHA256을 사용해 JWT를 서명하고 검증하며, RS256은 RSA 개인 키로 서명하고 대응하는 공개 키로 검증합니다. 동일한 당사자가 토큰을 발급하고 검증하는 경우(모놀리스, 또는 시크릿을 안전하게 공유할 수 있는 신뢰된 내부 서비스)에는 HS256을 사용하세요. 더 단순하고 빠릅니다. 제3자나 많은 서비스가 토큰을 검증해야 하지만 발급할 수는 없어야 하는 경우에는 RS256을 사용하세요. 공개 키만 배포할 수 있기 때문입니다. 두 가지의 인코딩된 구조는 JWT 인코더에서 살펴볼 수 있습니다. HS256 서명은 정확히 헤더와 페이로드에 대한 HMAC-SHA256입니다.

Bcrypt 해시 생성 및 검증 도구

보안 도구

온라인으로 bcrypt 비밀번호 해시를 생성·검증하세요 — 조절 가능한 비용 인자, $2b$/$2a$/$2y$ 접두사 지원. 100% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.

JWT 디코더 (JWT Decoder)

보안 도구

무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.

JWT 인코더 (JWT Encoder)

보안 도구

무료 온라인 JWT 생성기·인코더. 헤더와 페이로드를 구성하고 HS256, RS256, ES256으로 즉시 서명. 100% 브라우저 기반 — 비밀 키와 개인 키가 기기를 떠나지 않음.

무료 JWT 비밀 키 생성기 — HS256/384/512

보안 도구

온라인으로 HS256/384/512용 강력한 RFC 준수 JWT 비밀 키를 생성하세요. 100% 브라우저 실행, 서버 전송 없음. base64url·base64·hex, .env 복사 지원.

MD5 해시 생성기 · 파일 체크섬 도구

보안 도구

MD5, SHA-256, SHA-1, SHA-512 해시를 온라인에서 무료로 생성합니다. 브라우저에서 텍스트나 파일을 해싱하고 체크섬을 검증하며 결과를 복사할 수 있습니다.

무작위 비밀번호 생성기 (Random Password Generator)

보안 도구

강력한 무작위 비밀번호를 즉시 만드는 무료 온라인 도구. 길이와 문자 종류를 지정해 최대 50개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.