TOTP 코드 생성기

base32 비밀키를 받아 자릿수와 시간 주기를 골라 실시간 TOTP 2단계 인증 코드를 브라우저에서 만들어 줍니다.

도구를 불러오는 중…

TOTP 코드 생성기base32 비밀키를 붙여 넣으면 Google Authenticator나 Authy처럼 그에 대응하는 TOTP 2단계 인증 코드가 1초마다 갱신됩니다. 6자리 또는 8자리와 30초(또는 사용자 지정) 주기를 고를 수 있고, 필요할 때 새 무작위 비밀키도 생성합니다. 모든 계산은 Web Crypto API의 HMAC-SHA1로 로컬에서 이뤄지므로 비밀키는 브라우저를 떠나지 않습니다.

TOTP 코드 생성기란?

TOTP 코드 생성기는 base32 공유 비밀키를 Google Authenticator, Authy, Microsoft Authenticator 같은 인증 앱이 만드는 것과 동일한 시간 기반 일회용 비밀번호(TOTP)로 바꿔 주는 무료 온라인 도구입니다. 개발자와 QA 엔지니어는 2단계 인증 흐름을 테스트하거나, otpauth:// URI의 키가 손에 있을 때 접근을 복구하거나, QR 코드를 스캔하지 않고 2FA 설정이 제대로 동작하는지 확인하는 데 사용합니다. RFC 4226 HOTP 위에 RFC 6238을 구현해 시간 카운터의 HMAC-SHA1을 계산하고 동적 절단을 적용해 주기마다 바뀌는 6자리 또는 8자리 코드를 만듭니다. 코드와 남은 시간 카운트다운은 매초 실시간으로 갱신되며, 버튼 한 번으로 새 테스트 계정용 암호학적 무작위 base32 비밀키를 발급합니다.

TOTP 코드 생성기 사용법

  1. 「비밀키」 필드에 base32 비밀키를 붙여 넣거나, 「비밀키 생성」을 눌러 새 무작위 비밀키를 만드세요. 공백과 하이픈은 무시됩니다.
  2. 서비스가 요구하는 자릿수에 맞춰 6자리 또는 8자리를 고르세요.
  3. 「주기」를 초 단위로 설정하세요(30이 거의 모든 인증 앱이 쓰는 표준값입니다).
  4. 「코드」 필드에서 현재 코드를 읽으세요. 코드는 스스로 갱신되고, 카운트다운이 얼마나 유효한지 보여 줍니다.
  5. 카운트다운이 0에 닿기 전에 복사 버튼으로 코드를 복사하거나, 다음 코드가 들어오기를 기다리세요.

예시

표준 6자리·30초 코드(가장 흔한 경우)

JBSWY3DPEHPK3PXP 같은 비밀키를 붙여 넣고 자릿수는 6, 주기는 30으로 둡니다. 「코드」 필드에 30초마다 바뀌는 여섯 자리 숫자가 표시되며, 같은 순간 같은 비밀키에 대해 Google Authenticator가 보여 주는 것과 동일합니다.

더 엄격한 설정을 위한 8자리 코드

더 긴 일회용 비밀번호를 요구하는 서비스를 위해 자릿수를 8로 전환하세요. 같은 비밀키가 이제 여덟 자리 코드를 만들며, 선택한 주기로 계속 바뀝니다.

테스트 계정용 새 비밀키 생성

「비밀키 생성」을 눌러 새 무작위 20바이트 base32 키를 만든 다음, 그 같은 비밀키를 설정 중인 앱이나 서비스에 입력하면 양쪽이 일치하는 코드를 만들어 냅니다.

자주 묻는 질문

제 비밀키가 어딘가로 업로드되나요?
아니요. base32 비밀키는 브라우저 안에 머뭅니다. 코드는 Web Crypto API(HMAC-SHA1)로 로컬에서 계산되며, 어떤 것도 서버로 전송되거나 저장되지 않으므로 도구는 오프라인에서 작동하고 비밀키는 페이지를 떠나지 않습니다.
왜 제 코드가 인증 앱과 일치하지 않나요?
TOTP는 현재 시간과 정확한 비밀키·자릿수·주기에 의존합니다. 자릿수(6 또는 8)와 주기(보통 30초)가 서비스와 같은지, 비밀키를 빠짐없이 붙여 넣었는지, 기기 시계가 정확한지 확인하세요. 시계 오차가 크면 코드가 어긋납니다.
비밀키는 어떤 형식이어야 하나요?
문자 A-Z와 숫자 2-7을 쓰는 base32 문자열로, otpauth:// 설정 URI나 QR 코드 아래에 표시되는 인코딩과 같습니다. 공백·하이픈·소문자·끝의 = 패딩은 허용되며, 그 외 문자는 잘못된 것으로 표시됩니다.
어떤 알고리즘과 표준을 사용하나요?
HMAC-SHA1을 사용해 RFC 4226 HOTP 위에 RFC 6238 TOTP를 구현합니다. 거의 모든 인증 앱이 쓰는 기본값입니다. 현재 SHA-256이나 SHA-512 변형은 제공하지 않습니다.
비밀키를 붙여 넣는 대신 여기서 생성할 수 있나요?
네. 「비밀키 생성」은 crypto.getRandomValues로 암호학적 무작위 20바이트 키를 만들어 base32로 인코딩하므로, 보호하려는 앱에 바로 등록할 수 있습니다.

관련 도구