도구스개발

TOTP 코드 생성기

Base32 비밀키나 otpauth URI로 2단계 인증 코드(TOTP)를 브라우저에서 바로 계산합니다. 직전·다음 주기 코드와 남은 시간도 함께 보여줍니다.

넣은 값은 서버로 보내지 않습니다.
HMAC 계산까지 모두 브라우저 안에서 합니다. 비밀키도 이 페이지를 벗어나지 않고, 저장되지도 않습니다(새로고침하면 사라집니다). 그래도 공용 PC에서는 실제 비밀키를 넣지 마세요 — 화면에 그대로 보이고 브라우저 기록에 남을 수 있습니다.

서비스가 QR 코드와 함께 보여주는 문자열입니다. 공백과 소문자는 알아서 처리합니다.

자리

거의 모든 서비스가 이것을 씁니다. 인증 앱의 기본값입니다.

지금 코드

시계를 읽는 중

브라우저 시각을 기준으로 계산합니다

otpauth URI로 만들면

otpauth://totp/me%40example.com?secret=JBSWY3DPEHPK3PXP

인증 앱의 QR 코드에 담기는 문자열입니다. 기본값(6자리·30초·SHA-1)은 적지 않는 것이 관례입니다.

어떻게 계산하나
지금 시각을 주기로 나눈 몫 T를 8바이트로 만들어 비밀키로 HMAC을 구하고, 그 결과의 마지막 바이트 하위 4비트가 가리키는 자리에서 4바이트를 뽑아 최상위 비트를 뗀 뒤 10의 자릿수 제곱으로 나눈 나머지를 씁니다(RFC 6238). 시작 위치가 매번 달라지는 것이 동적 절단이며, 특정 자리만 노려보는 것을 막습니다.
이 계산기의 결과는 RFC 6238 부록 B의 시험 벡터와 모두 일치합니다 — SHA-1 여섯 개, SHA-256·SHA-512 각 네 개를 테스트로 확인했습니다. 인증 앱이 내는 값과 같아야 하며, 다르다면 비밀키·자릿수·주기·해시 중 하나가 다른 것입니다.

사용 방법

  1. 1비밀키를 넣을지 otpauth URI를 넣을지 고릅니다.
  2. 2Base32 비밀키를 넣습니다. 공백과 소문자는 알아서 처리합니다.
  3. 3자릿수·주기·해시가 기본값(6자리·30초·SHA-1)과 다르면 맞춰 줍니다.
  4. 4지금 코드와 남은 시간이 1초마다 새로 계산됩니다.

자주 묻는 질문

지금 시각을 주기(보통 30초)로 나눈 몫 T를 8바이트로 만들어 비밀키로 HMAC-SHA1을 구합니다. 그 결과의 마지막 바이트 하위 4비트가 가리키는 자리에서 4바이트를 뽑아 최상위 비트를 떼고, 10의 자릿수 제곱으로 나눈 나머지가 코드입니다(RFC 6238).

서버와 앱이 같은 비밀키와 같은 시계를 갖고 각자 계산하기 때문입니다. 처음 등록할 때 QR 코드로 비밀키를 나눠 가진 뒤로는 오가는 통신이 없습니다. 그래서 비행기 모드에서도 코드가 나옵니다.

대부분 기기 시계가 어긋난 것입니다. 서버는 보통 앞뒤 한 주기까지 받아 주지만 그보다 벌어지면 맞지 않습니다. 자동 시각 맞춤을 켜 보세요. 시계가 맞는데도 틀리면 비밀키·자릿수·주기·해시 중 하나가 다른 것입니다.

HMAC 결과의 어느 4바이트를 쓸지를 마지막 바이트로 정하는 방식입니다. 시작 위치가 매번 달라져 특정 자리만 노려보는 것을 막습니다. 최상위 비트를 떼는 것은 언어마다 부호 있는 정수 처리가 달라 값이 갈리는 것을 피하려는 실용적인 이유입니다.

가지 않습니다. Base32 해독부터 HMAC 계산까지 모두 브라우저 안에서 하며, 이 도구는 입력값을 저장하지도 않습니다(새로고침하면 사라집니다). 다만 화면에 그대로 보이므로 공용 PC에서는 실제 비밀키를 넣지 마세요.

RFC 6238 부록 B의 시험 벡터와 모두 일치하는 것을 확인했습니다. SHA-1 여섯 개, SHA-256과 SHA-512 각 네 개를 테스트로 박아 두었습니다. 인증 앱이 내는 값과 같아야 합니다.

알아두면 좋은 점

  • 입력값을 저장하지 않습니다. 새로고침하면 사라지고, 최근 사용 기록에도 남지 않습니다.
  • 공용 PC에서는 실제 비밀키를 넣지 마세요. 화면에 그대로 보이고 브라우저 기록에 남을 수 있습니다.
  • 이 도구는 인증 앱을 대신하기 위한 것이 아니라, 구현을 확인하거나 앱과 값을 맞춰 볼 때 쓰는 것입니다. 실제 2단계 인증은 별도 기기의 인증 앱을 쓰세요.
  • 브라우저 시계를 그대로 씁니다. 이 컴퓨터의 시각이 어긋나 있으면 코드도 어긋납니다.
  • otpauth://totp/만 다룹니다. 카운터 기반인 otpauth://hotp/는 계산 방식이 다릅니다.

함께 보면 좋은 도구

마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.