แฮช/การเข้ารหัส

TOTP Generator/Verifier

รหัสผ่านครั้งเดียวตามเวลา (TOTP, RFC 6238) — สร้างรหัสปัจจุบันจาก secret และตรวจสอบรหัสที่ป้อนโดยยอมรับความคลาดเคลื่อนของเวลา

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

บทความเกี่ยวกับเครื่องมือนี้: TOTP: รหัสใช้ครั้งเดียวในแอปยืนยันตัวตนทำงานอย่างไร

คำถามที่พบบ่อย

ทำไมโค้ดที่สร้างขึ้นถึงหมดอายุเร็วมาก?

โค้ด TOTP อิงตามเวลา — ค่าเริ่มต้นจะหมุนเวียนทุก 30 วินาที คำนวณจากเวลา Unix ปัจจุบันและความลับที่ใช้ร่วมกัน หน้าต่างสั้น ๆ นี้จำกัดว่าโค้ดที่รั่วไหลจะยังใช้ได้นานแค่ไหน

จะเกิดอะไรขึ้นถ้านาฬิกาของอุปกรณ์ฉันไม่ตรงกัน?

TOTP อาศัยการที่ทั้งสองฝ่ายเห็นตรงกันเรื่องเวลาปัจจุบันโดยประมาณ แอปยืนยันตัวตนและเซิร์ฟเวอร์ส่วนใหญ่ยอมรับความคลาดเคลื่อนของนาฬิกาเล็กน้อย (ปกติหนึ่งช่วงเวลา) แต่ความคลาดเคลื่อนที่มากกว่านั้นจะทำให้โค้ดที่ถูกต้องถูกปฏิเสธ

คีย์ลับของฉันถูกส่งไปที่ไหนหรือไม่เมื่อสร้างโค้ดที่นี่?

ไม่ โค้ด TOTP ถูกคำนวณทั้งหมดในเบราว์เซอร์ของคุณ คีย์ลับจะไม่ออกจากอุปกรณ์ของคุณเลย

TOTP ป้องกันฟิชชิงได้หรือไม่?

ไม่ครบถ้วน หากเหยื่อกรอกรหัสผ่านและรหัส TOTP ปัจจุบันลงในเว็บไซต์ปลอมแปลง ผู้โจมตีสามารถนำค่าทั้งสองไปใช้บนเว็บไซต์จริงได้ทันทีในขณะที่รหัสยังใช้งานได้อยู่ มีเพียงกุญแจฮาร์ดแวร์ตามมาตรฐาน FIDO2/WebAuthn เท่านั้นที่ป้องกันการโจมตีแบบเรียลไทม์เช่นนี้ได้

เหตุใดเซิร์ฟเวอร์จึงยอมรับช่วงเวลาก่อนหน้าด้วย ไม่ใช่แค่ช่วงเวลาปัจจุบัน?

เพื่อชดเชยความล่าช้าของเครือข่ายเล็กน้อยระหว่างการสร้างรหัสบนโทรศัพท์กับช่วงเวลาที่เซิร์ฟเวอร์ได้รับและตรวจสอบ หากไม่มีระยะผ่อนปรนนี้ รหัสที่ถูกต้องบางครั้งอาจถูกปฏิเสธเพียงเพราะความล่าช้าปกติไม่กี่วินาที

บทความ: แฮช/การเข้ารหัส

Hash Generator: MD5, SHA-1 และ SHA-256 ต่างกันอย่างไร

เหตุใด MD5 จึงยังใช้ตรวจสอบความถูกต้องของไฟล์ แต่ไม่ใช้กับรหัสผ่าน

Checksum Verifier: วิธีตรวจสอบว่าไฟล์ไม่เสียหาย

เหตุใด checksum ที่ตรงกันจึงยืนยันความถูกต้องของไฟล์ แต่ไม่ยืนยันว่าใครเป็นผู้สร้าง

HMAC: แฮชที่มีคีย์ต่างจากแฮชธรรมดาอย่างไร

เหตุใด SHA-256 ธรรมดาจึงไม่ป้องกันการปลอมแปลงข้อความ แต่ HMAC ป้องกันได้

Bcrypt: เหตุใดรหัสผ่านจึงถูกแฮชอย่างช้า ๆ ไม่ใช่เร็ว

เหตุใด SHA-256 ที่เร็วจึงเป็นตัวเลือกที่แย่สำหรับรหัสผ่าน และ bcrypt ที่ช้าจึงเป็นตัวเลือกที่ถูกต้อง

UUID: ตัวระบุที่แทบไม่เคยซ้ำกันถูกสร้างขึ้นอย่างไร

เหตุใด UUID v4 จึงสามารถสร้างแยกกันได้บนเครื่องนับล้านเครื่องโดยไม่มีความเสี่ยงชนกัน

Password Generator: อะไรที่ทำให้รหัสผ่านแข็งแกร่งจริง ๆ

เหตุใดรหัสผ่านยาวที่ประกอบจากคำในพจนานุกรมจึงแข็งแกร่งกว่ารหัสผ่านสั้นที่มีสัญลักษณ์และตัวเลข

AES: การเข้ารหัสแบบสมมาตรทำงานอย่างไร

เหตุใดคีย์เดียวกันจึงเข้ารหัสและถอดรหัสข้อมูลใน AES และสิ่งนี้ต่างจากการเข้ารหัสแบบอสมมาตรอย่างไร

Argon2: เหตุใดอัลกอริทึมนี้จึงชนะการแข่งขันแฮชรหัสผ่าน

Argon2 ป้องกันการโจมตีด้วย GPU ได้ดีกว่าอัลกอริทึมแฮชรหัสผ่านรุ่นเก่าอย่างไร

Scrypt: เหตุใดอัลกอริทึมนี้จึงต้องการหน่วยความจำมากขนาดนั้น

เหตุใด scrypt จึงต้องการหน่วยความจำมากโดยตั้งใจเพื่อให้การเดารหัสบนอุปกรณ์ ASIC ยากขึ้น

PBKDF2: มาตรฐานการยืดคีย์ที่เก่าแก่ที่สุด

เหตุใดจำนวนรอบการวนซ้ำที่แนะนำสำหรับ PBKDF2 จึงเพิ่มขึ้นทุกปี

X.509: ภายในใบรับรอง SSL มีอะไรบ้าง

เบราว์เซอร์ตรวจสอบอะไรในใบรับรองของเว็บไซต์ก่อนแสดงกุญแจสีเขียว

PGP: การเข้ารหัสด้วยกุญแจสาธารณะและกุญแจส่วนตัวทำงานอย่างไร

เหตุใดจึงสามารถแชร์กุญแจสาธารณะ PGP ได้อย่างอิสระ แต่ห้ามแชร์กุญแจส่วนตัวเด็ดขาด