Thuật toán HOTP (HMAC-based One-Time Password, RFC 4226) sinh mã OTP dựa trên một khoá bí mật K và một bộ đếm (counter) C là số nguyên không âm, theo các bước sau:
offset = H[19] & 0x0F (lấy 4 bit thấp của byte cuối cùng làm chỉ số, 0≤offset≤15).0x7F) rồi ghép 4 byte đó thành một số nguyên 31-bit bin_code (big-endian, byte đầu là byte cao nhất).Cho khoá bí mật K (dạng chuỗi hex, độ dài chẵn), bộ đếm C và số chữ số d, hãy tính mã OTP theo thuật toán trên.
Ví dụ: với K= 3132333435363738393031323334353637383930 (là dạng hex của chuỗi ASCII "12345678901234567890"), C=0, d=6, mã OTP sinh ra là 755224.
Gồm 3 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ã OTP.
Ví dụ:
Đầu vào:
3132333435363738393031323334353637383930
9
6
Đầu ra:
520489
Đầu vào:
3132333435363738393031323334353637383930
0
6
Đầu ra:
755224
Đang tải editor...