TOTP·HOTP 코드 생성기 (2단계 인증)
Base32 비밀 키나 otpauth:// 링크로 TOTP·HOTP 일회용 코드(RFC 6238 / RFC 4226)를 만듭니다. SHA-1/256/512, 6~8자리, 원하는 시각을 지원합니다.
인증 앱의 6자리 코드는 공개된 두 알고리즘으로 만듭니다. 횟수를 세는 HOTP(RFC 4226)와 시계를 쓰는 TOTP(RFC 6238)입니다. 이 생성기는 앱이 받은 것과 같은 Base32 비밀 키(또는 QR 코드 속 otpauth:// 링크)를 받아 현재·이전·다음 코드, 남은 초, 주변 단계의 표를 보여 줍니다. 직접 만든 2FA 구현을 테스트하거나 특정 시각의 코드를 확인하거나 코드가 거부되는 이유를 살필 때 쓰세요.
사용 방법
- Base32 비밀 키 또는 otpauth:// 링크 전체를 붙여 넣으세요.
- 서비스가 달리 안내하지 않으면 TOTP, SHA-1, 6자리, 30초를 그대로 두세요.
- 시각을 비워 두면 지금, Unix 시간이나 ISO 날짜를 넣으면 그 시점의 코드를 보여 줍니다.
- HOTP는 카운터 방식을 고르고 카운터를 입력하세요.
계산식
HOTP(K, C) = Truncate(HMAC-SHA-1(K, C)) mod 10^d. TOTP는 C = floor((now − T0) / X)를 쓰며 T0 = 0(1970년 1월 1일), X = 30초입니다.
Truncate는 HMAC 마지막 바이트의 하위 4비트를 오프셋으로 삼아 거기서 4바이트를 읽고 최상위 비트를 지워 31비트 수를 만듭니다. d는 자릿수입니다. 서비스가 요구하면 HMAC-SHA-1 대신 SHA-256, SHA-512를 씁니다. 카운터 C는 8바이트로, 상위 바이트부터 씁니다.
예시
RFC 6238은 ASCII 비밀 키 "12345678901234567890", SHA-1, 8자리를 씁니다. Unix 시간 59에서 단계는 T = 1이고 코드는 94287082입니다. 1111111109(2005년 3월 18일 01:58:29 UTC)에서는 T = 37037036이고 코드는 07081804입니다. 같은 비밀 키를 Base32로 쓰면 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ이고, 카운터 1의 HOTP로는 287082가 나옵니다.
자주 묻는 질문
2FA 비밀 키를 여기에 붙여 넣어도 안전한가요?
코드는 브라우저에서 계산되고 어디로도 전송되지 않지만, 비밀 키는 비밀번호만큼 민감합니다. 가진 사람은 누구나 내 코드를 만들 수 있습니다. 믿을 수 있는 기기에서 테스트와 복구용으로만 쓰고 비밀 키를 절대 공유하지 마세요.
서비스가 내 코드를 거부하는 이유는 무엇인가요?
대개 기기 시계가 한 단계 넘게 어긋나 있거나 설정이 다릅니다. 대부분의 서비스는 SHA-1, 6자리, 30초를 쓰며 다른 값은 otpauth:// 링크에 적혀 있습니다. "사용한 시각" 줄을 확인하고 이전·다음 코드와 비교해 보세요.
TOTP와 HOTP는 어떻게 다른가요?
TOTP는 시계에서 카운터를 얻으므로 코드가 시간 단계가 지나면 만료됩니다. HOTP는 코드를 요청할 때마다 올라가는 카운터를 쓰며, 서버도 자기 카운터를 갖고 작은 앞쪽 허용 범위를 둡니다.
비밀 키에서 0, 1, 8, 9가 거부되는 이유는 무엇인가요?
Base32(RFC 4648)는 A–Z와 2–7만 쓰므로 0이나 1은 거의 항상 O나 I를 잘못 입력한 것입니다.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/totp-generator/
인용·퍼가기
kakaoCalc. (2026, November 8). TOTP·HOTP 코드 생성기 (2단계 인증). https://kakao.mobile/ko/tools/totp-generator/
“TOTP·HOTP 코드 생성기 (2단계 인증).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/totp-generator/.