TOTP 생성기 — 라이브 2FA 인증 코드
Base32 TOTP 시크릿을 붙여넣고 실제 라이브 6자리 인증 코드가 30초마다 갱신되는 모습을 확인하세요. 모든 과정이 브라우저 안에서 오프라인으로 이루어집니다.
🔒 전적으로 귀하의 브라우저에서 처리됩니다. 여기에 입력하는 어떤 것도 업로드되지 않습니다.
결과
이 도구는 Base32 시크릿으로부터 표준을 준수하는 실제 시간 기반 일회용 비밀번호(TOTP) 코드를 생성합니다. Google OTP나 Authy 같은 앱에서 표시되는 것과 동일한 6자리 회전 코드죠. 2단계 인증을 설정할 때 받은 시크릿, 즉 보통 QR 코드 뒤에 숨겨져 있는 문자열을 붙여넣으면, 마치 스마트폰 앱 안에서처럼 라이브 코드가 카운트다운되며 30초마다 새로고침되는 모습을 지켜볼 수 있습니다. 이 도구는 본인이 소유하거나 관리하는 2FA 시크릿을 테스트하고 확인하는 용도로 만들어졌습니다. 구축 중인 로그인 플로우를 디버깅하거나, 프로비저닝 QR을 폐기하기 전에 백업 코드를 확인하거나, 시크릿을 올바르게 입력했는지 재차 확인하는 일 등에 유용합니다.
내부적으로 이것은 RFC 4226(HOTP)을 기반으로 구축된 RFC 6238(TOTP)의 진정한 구현체이지, 겉모습만 흉내 낸 카운트다운이 아닙니다. Base32 시크릿은 RFC 4648에 따라 원시 키 바이트로 디코딩되고, 현재 Unix 시간을 시간 스텝으로 나누어 움직이는 카운터를 얻으며, 그 카운터는 8바이트 빅엔디언 버퍼로 인코딩됩니다. 브라우저의 네이티브 Web Crypto API(crypto.subtle)가 선택한 해시로 해당 버퍼에 대한 HMAC을 계산합니다. SHA-1은 기존 인증 앱과의 호환성을 위해 거의 보편적인 기본값으로 유지되며, 더 강력한 변형을 지원하는 설정을 위해 SHA-256 및 SHA-512도 제공됩니다. 그런 다음 RFC 4226의 동적 트렁케이션은 HMAC 출력의 마지막 바이트에서 얻은 오프셋을 기준으로 4바이트를 추출하고, 최상위 비트를 마스킹한 후 결과를 10^6 또는 10^8로 나눈 나머지를 구하여 6자리 또는 8자리 코드를 생성합니다. 바로 이 연산이 여러분의 휴대폰 인증 앱이 내부적으로 실행하는 것과 정확히 같습니다.
모든 과정은 로컬에서 일어납니다. 서버 구성 요소도, 시크릿을 실어 나르는 분석 비콘도, 어떤 종류의 외부 API 호출도 존재하지 않습니다. 필드에 붙여넣은 Base32 텍스트는 현재 탭에서 실행 중인 JavaScript에 의해 직접 파싱되며 절대 탭을 떠나지 않습니다. 이 점이 신뢰하는 기기에서 2FA 시크릿을 온전히 검사하는 안전한 방법이 되어주지만, 인증 정보를 다루는 모든 도구가 그렇듯이 공유 컴퓨터나 공공 PC에서는 시크릿을 붙여넣지 말아야 하며, 본인이 소유하거나 명시적으로 테스트 권한을 부여받은 계정에 연결된 코드에만 사용해야 합니다.
알고리즘, 자릿수, 시간 스텝 조절 기능이 존재하는 이유는 실제 TOTP 도입 환경이 완벽히 균일하지 않기 때문입니다. 대부분의 소비자 서비스는 SHA-1에 6자리, 30초 스텝을 사용하지만, 일부 엔터프라이즈 및 개발자 도구는 SHA-256이나 SHA-512 시크릿, 8자리 코드, 또는 15초나 60초 같은 비표준 시간 스텝을 발급하기도 합니다. 이 설정들을 프로비저닝 URI나 설정 페이지에 명시된 대로 맞추면 인증 앱이 표시할 코드를 정확히 재현할 수 있으며, 이는 여러분이 직접 TOTP 검증 서버를 구현하며 신뢰할 수 있는 오프라인 참조치가 필요할 때 대단히 가치 있는 일입니다.