TOTP (Time-based One-Time Password, RFC 6238) mở rộng thuật toán HOTP (xem mô tả HOTP ở bài "Sinh mã OTP theo bộ đếm") bằng cách thay bộ đếm C bởi giá trị tính từ thời gian:
C=⌊XT−T0⌋
trong đó T là thời điểm Unix hiện tại (số giây kể từ 1/1/1970), T0 là mốc thời gian bắt đầu (thường bằng 0), và X là độ dài một bước thời gian tính bằng giây (thường là 30). Sau khi tính được C, áp dụng đúng thuật toán HOTP (dùng HMAC-SHA1) để sinh mã d chữ số.
Cho khoá bí mật K (hex), thời điểm T, mốc T0, bước thời gian X và số chữ số d, hãy tính mã TOTP.
Ví dụ: với K= 3132333435363738393031323334353637383930, T=59, T0=0, X=30, d=8, ta có C=⌊59/30⌋=1 và mã TOTP là 94287082.
Gồm 5 dòng:
Một dòng duy nhất: chuỗi gồm đúng d chữ số (đệm số 0 ở đầu nếu cần) là mã TOTP.
Ví dụ:
Đầu vào:
3132333435363738393031323334353637383930
1111111109
0
30
8
Đầu ra:
07081804
Đầu vào:
3132333435363738393031323334353637383930
59
0
30
8
Đầu ra:
94287082
Đang tải editor...