TOTP / 2FA 코드 생성기
Base32 시크릿으로 TOTP/2FA 코드를 즉시 생성하세요 — 100% 브라우저에서 처리되어 시크릿이 기기를 벗어나지 않습니다. 온라인 QR 설정 + 코드 검증. 무료, 가입 불필요.
고급 옵션
TOTP / 2FA 코드 생성기란?
TOTP 생성기는 공유 시크릿을 이중 인증을 구동하는 회전하는 일회용 코드로 변환합니다. TOTP — 시간 기반 일회용 비밀번호, RFC 6238에 정의됨 — 는 Base32 시크릿과 현재 시각을 취해 시간을 고정된 단계(기본 30초)로 나누고, 단계 카운터에 대해 HMAC을 실행하여 짧은 숫자 코드를 도출합니다. 인증기 앱과 서버가 모두 같은 시크릿을 보유하고 같은 시계를 읽기 때문에, 네트워크를 통해 교환하지 않고도 동일한 코드를 계산합니다. 이것이 바로 2FA의 핵심입니다. 비밀번호가 유출되더라도 공격자는 지금 당신의 시크릿만이 만들 수 있는 코드가 여전히 필요합니다.
"The TOTP algorithm is a time-based variant of the HOTP algorithm... TOTP = HOTP(K, T), where T is an integer representing the number of time steps between the initial counter time T0 and the current Unix time." — RFC 6238, Section 4
이 도구는 한 페이지에서 세 가지 작업을 수행합니다. 임의의 Base32 시크릿으로 카운트다운과 다음 코드 미리보기를 곁들인 실시간 코드를 생성하고, 인증기 앱으로 스캔할 otpauth:// URI와 QR 코드를 만들어 새 시크릿을 설정하며, 방금 회전한 코드를 서버가 받아들이는 방식과 동일하게 ±1 시간 단계 허용 범위로 코드를 시크릿과 대조해 검증합니다. 이 모든 것은 의존성 없이, 네트워크 호출 없이 브라우저의 네이티브 Web Crypto API를 통해 실행됩니다.
개발자는 TOTP 생성기를 끊임없이 찾습니다. 2FA 로그인을 디버깅하는 동안 사용자의 앱이 보여 주는 정확한 코드를 재현하기 위해, 새 계정용 시크릿과 QR을 생성하기 위해, 서버의 검증 창이 사용자가 경험하는 것과 일치하는지 확인하기 위해, 또는 이중 인증 흐름의 종단 간 테스트용 결정론적 픽스처를 생성하기 위해서입니다. 시크릿은 수명이 긴 키이므로 — 이를 가진 사람은 누구나 미래의 모든 코드를 생성할 수 있습니다 — 비밀번호처럼 보호해야 합니다. 2FA 옆에 자리하는 강력한 비밀번호와 복구 코드에는 무작위 비밀번호 생성기를, 독립 등록 이미지가 필요할 때는 QR 코드 생성기를 함께 사용하세요. 인증된 세션 위에 종종 함께 전달되는 JSON Web Token에 서명하려면 JWT 인코더를 참고하세요.
// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
// Decode the Base32 secret to raw bytes (A-Z, 2-7)
const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
let bits = '';
for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
bits += alpha.indexOf(c).toString(2).padStart(5, '0');
const bytes = new Uint8Array(
bits.match(/.{8}/g).map((b) => parseInt(b, 2)));
// Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
const counter = Math.floor(time / 1000 / 30);
const msg = new Uint8Array(8);
let c = counter;
for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }
const key = await crypto.subtle.importKey(
'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));
// Dynamic truncation (RFC 4226) -> 6-digit code
const off = hmac[hmac.length - 1] & 0x0f;
const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
(hmac[off + 2] << 8) | hmac[off + 3];
return (bin % 1_000_000).toString().padStart(6, '0');
}
const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds 주요 기능
카운트다운이 있는 실시간 코드
Base32 시크릿을 붙여 넣으면 현재 TOTP 코드가 30초 카운트다운 링과 다음 코드 미리보기와 함께 즉시 나타납니다 — 생성 버튼도, 기다림도 없습니다.
시크릿 · QR 설정
무작위 Base32 시크릿을 생성한 다음, Google Authenticator, Authy, 1Password로 바로 스캔할 otpauth:// URI와 QR 코드를 받으세요.
내장 코드 검증기
실제 서버가 사용하는 것과 같은 ±1 시간 단계 허용 범위로 코드를 시크릿과 대조해 확인하므로, 방금 회전한 코드도 여전히 검증됩니다.
설정 가능한 알고리즘 · 자릿수
SHA-1, SHA-256, SHA-512 간에 전환하고, 6자리 또는 8자리를 선택하며, 30초 또는 60초 주기를 설정해 어떤 제공업체의 요구사항에도 맞추세요.
시크릿이 브라우저를 벗어나지 않음
모든 코드는 네이티브 Web Crypto API를 통해 로컬에서 계산됩니다. 아무것도 업로드, 로깅, 저장되지 않으며 — 오프라인에서도 검증 가능합니다.
의존성 제로
오직 브라우저의 Web Crypto API만으로 구축되었습니다 — 서드파티 라이브러리도, 텔레메트리도, 어떤 종류의 네트워크 호출도 없습니다.
TOTP 생성기 예시
표준 6자리 TOTP (SHA-1, 30초)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-1 digits: 6 period: 30s
Code: 282760 · expires in 30s
모든 주류 앱이 사용하는 기본 설정 — SHA-1, 6자리, 30초 주기 — 을 적용한 RFC 6238 표준 테스트 시크릿입니다. 코드는 시간 기반이므로 정확한 값은 현재 시각에 따라 달라집니다. 이 도구는 실시간 카운트다운과 다음 코드를 함께 보여 줍니다.
8자리 엔터프라이즈 TOTP (SHA-256)
secret: JBSWY3DPEHPK3PXP algorithm: SHA-256 digits: 8 period: 30s
Code: 31094217 · expires in 30s
일부 엔터프라이즈 및 고보안 시스템은 SHA-1 기본값 대신 SHA-256으로 서명된 8자리 코드를 발급합니다. 서버가 기대하는 알고리즘, 자릿수, 주기를 정확히 맞추지 않으면 생성된 코드가 검증되지 않습니다.
인증기 앱용 otpauth:// 설정 URI
issuer: Acme account: alice@example.com secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30
이 도구는 표준 otpauth:// URI를 만들어 QR 코드로 렌더링합니다. Google Authenticator, Authy, 1Password로 스캔하거나 URI를 직접 붙여 넣어 기기에 시크릿을 등록하세요.
TOTP 생성기 사용 방법
- 1
Base32 시크릿 붙여넣기
생성 탭에서 Base32 시크릿(예: JBSWY3DPEHPK3PXP)을 붙여 넣으세요. 현재 TOTP 코드가 30초 카운트다운과 함께 즉시 나타납니다 — 생성 버튼은 없습니다.
- 2
고급 옵션 조정 (선택)
고급 옵션을 열어 알고리즘(SHA-1/256/512), 자릿수(6 또는 8), 주기(30 또는 60초)를 제공업체가 발급한 값에 맞게 변경하세요.
- 3
설정 또는 검증
설정 탭으로 인증기 앱용 시크릿과 QR을 생성하거나, 검증 탭으로 ±1 시간 단계 허용 범위에서 코드를 시크릿과 대조하여 확인하세요.
흔한 실수
알고리즘 또는 자릿수 불일치
SHA-256 또는 8자리용으로 발급된 시크릿은 SHA-1 / 6자리 기본값에서 완전히 다른 코드를 만듭니다. 제공업체의 매개변수를 정확히 맞추세요.
secret + SHA-1/6 digits // but server expects SHA-256/8
algorithm: SHA-256, digits: 8 // match the otpauth:// URI
시계 오차
기기 시계가 한 시간 단계 이상 어긋나면 코드가 검증되지 않습니다. 코드를 비교하기 전에 시스템 시계를 동기화하세요.
system clock 90s fast // code is two steps ahead
enable NTP / automatic time // code aligns with server
유효하지 않은 Base32 시크릿
Base32는 A–Z와 2–7만 사용합니다. 인쇄된 키의 공백은 괜찮지만, 0, 1, 8은 유효한 Base32가 아니므로 디코딩에 실패합니다.
secret: "JBSW 0NE8" // contains 0 and 8
secret: "JBSWY3DPEHPK3PXP" // valid Base32
일반적인 사용 사례
- 2FA 로그인 흐름 디버깅
- 사용자의 인증기 앱이 보여 주는 정확한 코드를 재현하여 이중 인증 로그인이 거부되는 이유를 추적하세요.
- 새 계정 등록
- 새로운 Base32 시크릿과 QR 코드를 생성한 다음, Google Authenticator, Authy, 1Password로 스캔하여 2FA를 설정하세요.
- 서버의 허용 창 검증
- 코드를 시크릿과 대조해 검증하여 백엔드가 방금 회전한 코드는 받아들이고 만료된 코드는 거부하는지 확인하세요.
- 종단 간 테스트 픽스처 구축
- 알려진 시크릿으로 결정론적 TOTP 코드를 계산하여 이중 인증 흐름의 자동화 테스트를 구동하세요.
- 엔터프라이즈 설정 맞추기
- 제공업체가 SHA-1 / 6자리 기본값에서 벗어날 때 8자리 또는 SHA-256 코드를 재현하여 불일치를 디버깅하세요.
- 빠른 접근 복구
- 휴대폰을 사용할 수 없을 때 백업된 시크릿으로 현재 코드를 생성하세요 — 시크릿의 일회용 사본을 사용해서요.
기술 세부 정보
- RFC 6238 / RFC 4226 준수
- RFC 4226의 HOTP 동적 절단 알고리즘 위에서 RFC 6238에 따라 TOTP를 구현하며, 선택 가능한 SHA-1, SHA-256, SHA-512를 지원합니다.
- 네이티브 Web Crypto HMAC
- 코드는 빅엔디언 시간 단계 카운터에 대한 crypto.subtle HMAC을 통해 도출됩니다. Base32 디코딩과 절단은 전적으로 브라우저 내에서 실행됩니다.
- 표준 otpauth:// URI, 의존성 제로
- 설정 URI는 발급자, 알고리즘, 자릿수, 주기 매개변수와 함께 Key Uri Format(otpauth://totp)을 따릅니다. 외부 라이브러리도, 네트워크 호출도 없습니다.
모범 사례
- 시크릿을 비밀번호처럼 다루기
- Base32 시크릿을 가진 사람은 누구나 미래의 모든 코드를 생성할 수 있습니다. 시크릿 관리자에 저장하고, 절대 소스 관리에 두지 말며, 여기서는 테스트 시크릿을 선호하세요.
- 시계를 동기화 상태로 유지하기
- TOTP는 정확한 시간에 의존합니다. 서버와 기기에서 네트워크 시간 동기화를 활성화하여 코드가 검증 창 내에서 정렬되도록 하세요.
- 필요하지 않으면 기본값 유지하기
- SHA-1, 6자리, 30초 주기는 앱 호환성을 극대화합니다. 제공업체가 요구할 때만 8자리 또는 SHA-256/512로 전환하세요.
TOTP / 2FA 생성기 FAQ
온라인 TOTP / 2FA 생성기를 사용해도 안전한가요?
otpauth:// URI, 생성된 코드는 모두 네이티브 Web Crypto API로 로컬에서 계산됩니다. 입력값과 연결된 네트워크 요청, 로깅, 저장, 분석이 전혀 없습니다 — 인터넷 연결을 끊고도 도구가 계속 작동하는지 확인해 보면 직접 검증할 수 있습니다. 이는 시크릿을 서버로 POST 전송하여 운영자가 코드를 영원히 발급할 수 있는 수상한 생성기와는 정반대입니다. TOTP 시크릿은 수명이 긴 공유 키이므로, 실험만 필요할 때는 일회용 또는 테스트 시크릿을 선호하는 것이 여전히 가장 안전한 습관입니다. TOTP란 무엇이며 Base32 시크릿이란 무엇인가요?
JBSWY3DPEHPK3PXP는 잘 알려진 RFC 테스트 시크릿입니다. 생성된 코드가 휴대폰 인증기 앱과 다른 이유는 무엇인가요?
TOTP와 HOTP의 차이는 무엇인가요?
8자리 코드나 SHA-256 / SHA-512를 사용할 수 있나요?
otpauth:// URI는 해당 매개변수를 기록하여 앱이 시크릿을 올바르게 등록하도록 합니다. 이 시크릿을 Google Authenticator, Authy, 1Password에 어떻게 추가하나요?
otpauth:// URI를 복사하세요. Google Authenticator나 Authy에서는 추가 버튼을 누르고 QR 코드 스캔을 선택해 카메라를 화면의 QR로 향하게 하거나, 설정 키 입력을 선택해 일치하는 계정 이름 및 알고리즘과 함께 Base32 시크릿을 붙여 넣으세요. 1Password에서는 로그인 항목을 편집하여 일회용 비밀번호 필드를 추가하고 otpauth:// URI를 직접 붙여 넣으세요. 문서용 독립 QR 이미지가 필요하신가요? QR 코드 생성기를 사용하고, 그 주변의 무작위 시크릿과 복구 코드에는 무작위 비밀번호 생성기를 사용하세요. 관련 도구
모든 도구 보기 →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개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.