Generator TOTP
Setiap kali Google Authenticator atau Authy menampilkan kode enam digit yang berganti tiap 30 detik, itulah TOTP: HMAC dari secret bersama dan waktu Unix saat ini, yang dibakukan dalam RFC 6238. Generator ini menghitung kode yang sama dari secret Base32 apa pun, sehingga berguna untuk men-debug integrasi autentikasi dua faktor (2FA) baru, mencari tahu kenapa sebuah layanan menolak kode Anda, atau mengamati reaksi algoritmenya terhadap parameter yang berbeda. Gunakan dengan secret uji: kode dihitung di server kami, jadi secret asli yang melindungi akun Anda seharusnya berada di aplikasi authenticator, bukan di halaman web.
Cara kerja generator TOTP ini
-
1
Tempel secret Base32
Huruf A-Z dan angka 2-7, format yang dipakai di dalam kode QR otpauth://. Spasi dan huruf kecil tidak masalah; karakter lain akan dilaporkan sebagai Base32 tidak valid.
-
2
Pilih algoritme hash
SHA-1 dipakai hampir semua layanan; beralihlah ke SHA-256 atau SHA-512 hanya jika layanan tersebut secara eksplisit mewajibkannya.
-
3
Atur digit dan periode
Pilih 6, 7, atau 8 digit dan jendela 30 atau 60 detik. Kombinasi standarnya adalah 6 digit setiap 30 detik.
-
4
Baca kode saat ini
Kode diperbarui setiap detik, dan hitung mundur menunjukkan berapa detik tersisa untuk jendela yang sedang berjalan.
-
5
Bandingkan URI otpauth
Alat ini menampilkan URI otpauth:// untuk parameter Anda, sehingga bisa dicocokkan dengan isi QR penyiapan sebuah layanan.
Algoritmenya dalam bahasa sederhana
TOTP adalah HOTP (one-time password berbasis HMAC, RFC 4226) yang counter-nya diganti dengan waktu Unix saat ini dibagi langkah waktu (biasanya 30 detik):
counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits
Perangkat Anda dan server menjalankan hitungan yang sama atas secret yang sama dan jam yang sama, sehingga keduanya sampai pada kode yang sama tanpa kode itu pernah dikirim ke mana pun. Kode 6 digit hanyalah HMAC terpotong modulo 10^6. Tanpa sihir, hanya hashing.
Parameter umum
| Layanan | Algoritme | Digit | Periode |
|---|---|---|---|
| Sebagian besar situs dan aplikasi | SHA-1 | 6 | 30 detik |
| GitHub | SHA-1 | 6 | 30 detik |
| Cloudflare | SHA-1 | 6 | 30 detik |
| Akun Microsoft | SHA-1 | 6 | 30 detik |
| Sebagian bank dan VPN perusahaan | SHA-256 atau SHA-512 | 8 | 60 detik |
Jika sebuah layanan menolak kode Anda, periksa dulu jumlah digit dan periodenya, baru algoritmenya. Perhatikan juga bahwa sebagian aplikasi authenticator diam-diam mengabaikan parameter non-standar (Google Authenticator dulunya memperlakukan semuanya sebagai SHA-1, 6 digit, 30 detik), jadi selalu uji dengan aplikasi persis yang akan dipakai pengguna Anda.
Menyimpan secret dengan aman
- Jangan pernah mengirim secret 2FA lewat email atau pesan. Begitu masuk kotak masuk, ia tinggal selamanya di log dan cadangan penyedia layanan.
- Daftarkan 2FA dengan memindai kode QR. QR mengodekan URI
otpauth://totp/...yang memuat secret, algoritme, digit, dan periode dalam satu paket yang tidak ambigu. - Cadangkan saat pendaftaran. Simpan kode pemulihan, atau secret-nya sendiri, di pengelola kata sandi; kehilangan ponsel tanpa itu membuat Anda terkunci.
- Satu secret per layanan. Setiap layanan menerbitkan secret-nya sendiri saat penyiapan; jika ada yang bocor, daftarkan ulang agar secret lama berhenti berlaku.
Penyimpangan waktu
TOTP hanya bekerja selama kedua jam sepakat. Halaman ini menghitung kode dengan jam server, jadi jika kode di sini berbeda dengan aplikasi authenticator di ponsel Anda, tersangka pertamanya adalah jam perangkat. Sebagian besar validator menerima selisih satu jendela ke tiap arah (30 sampai 60 detik); lebih dari itu, sinkronkan jam perangkat lewat NTP sebelum menyalahkan secret-nya.
Gunakan secret uji di sini
Alat ini menghitung kode di server kami: secret yang Anda ketik dikirim lewat HTTPS pada setiap pembaruan, dan juga muncul di URL halaman jika Anda berpindah antar langkah alat. Itu wajar untuk pengembangan, demo, dan debugging dengan secret sekali pakai. Ini bukan tempat untuk secret asli yang melindungi email atau rekening bank Anda; simpan yang itu di aplikasi authenticator khusus di ponsel. Jika Anda telanjur menempelkan secret asli di luar authenticator Anda, daftarkan ulang 2FA di layanan tersebut supaya secret-nya diganti.
Pertanyaan yang Sering Diajukan
Anggap halaman ini alat pengembang dan pengujian, bukan brankas. Kode dihitung di sisi server, jadi secret berjalan ke server kami lewat HTTPS dan dapat muncul di URL halaman di antara langkah-langkah. Silakan pakai secret demo atau pengembangan dengan bebas; jangan pernah menempel secret asli dari akun yang Anda pedulikan. Jika sudah telanjur, daftarkan ulang 2FA di layanan itu agar secret-nya diganti.
Periksa parameternya dulu: algoritme, jumlah digit, dan periode harus persis sama dengan yang diterbitkan layanan. Lalu periksa jamnya: halaman ini memakai jam server, jadi selisih biasanya menunjuk ke perangkat satunya. Terakhir, ingat bahwa sebagian aplikasi mengabaikan parameter non-standar; contoh klasiknya Google Authenticator.
Hanya Base32: huruf A sampai Z dan angka 2 sampai 7, dengan padding = opsional. Spasi dihapus dan huruf kecil dikonversi otomatis. Secret dalam bentuk hex atau byte mentah harus dikonversi dulu ke Base32; jika tidak, alat melaporkan secret Base32 tidak valid.
Anda terkunci dari 2FA akun tersebut. Gunakan alur pemulihan layanan (kode pemulihan, verifikasi identitas, cadangan SMS). Saat penyiapan, selalu simpan kode pemulihan atau kode QR awal di tempat aman.
Bisa. Hasilkan secret acak di sisi server, minimal 128 bit (RFC 4226 menyarankan 160), tampilkan sekali saja sebagai kode QR, dan validasi kode yang dikirim pengguna dengan menghitung HMAC yang sama, biasanya sambil menerima selisih satu jendela ke tiap arah. Pustaka yang matang tersedia untuk semua stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).
Alat Terkait
Identifikasi Enkripsi
Tempel teks rahasia atau hasil hash-nya; identifikator tersebut akan menunjukkan algoritma atau format enkoding yang kemungkinan digunakan, seperti MD5, SHA, bcrypt, AES, RSA, Base64, dan lainnya.
Generator Hash
Buat hash MD5, SHA-1, SHA-256, SHA-384, SHA-512, dan CRC32 dari teks, dengan digest siap salin untuk checksum dan perbandingan.
Generator MD5
Buat nilai hash MD5 dari teks atau file apa pun. Hasilnya berupa nilai 128 bit dalam format heksadesimal, dan dihitung sepenuhnya di peramban Anda.
Generator JWT
Buat JWT bertanda tangan dengan header kustom, klaim payload, metode penandatanganan HMAC atau RSA, batasan masa berlaku, serta pembatasan audiens untuk keperluan pengujian.
HMAC Generator
Hasilkan tanda tangan HMAC (SHA-256, SHA-384, SHA-512, SHA-1, MD5) dari pesan dan kunci rahasia untuk autentikasi API dan webhook.
Generator Hash MD5
Hitung nilai checksum MD5 dari teks dan file untuk verifikasi integritas. Hasilnya sesuai dengan output dari fungsi `md5sum` maupun perintah `openssl dgst -md5`.
Alat ini tersedia dalam bahasa lain
- Generator TOTP [PL]
- TOTP-generator [NL]
- TOTP-generator [SV]
- ตัวสร้าง TOTP [TH]
- TOTP-Generator [DE]
- TOTPジェネレーター [JA]
- TOTP 생성기 [KO]
- Generador TOTP [ES]
- Gerador TOTP [PT]
- Générateur TOTP [FR]
- مولد TOTP [AR]
- Bộ tạo TOTP [VI]
- TOTP Generator [EN]
- Generatore TOTP [IT]
- Генератор TOTP [RU]
- TOTP Üretici [TR]
- TOTP 生成器 [ZH]