OTP generation algorithms typically make use of randomness. This is necessary because otherwise it would be easy to predict future OTPs from observing previous ones. Concrete OTP algorithms vary greatly in their details. Various approaches for the generation of OTPs are listed below.
A. Time-Based OTP: Based on time-synchronization between the authentication server and the client providing the password (OTPs are valid only for a short period of time)
B. Event-Based OTP: Based on event-synchronization between the authentication server and the client providing the password (OTPs are valid only for the same event)
C. Challenge-Response OTP: The OTP general will be based the Challenge information.There are also different ways to make the user aware of the next OTP to use. Some systems consist of software that runs on the user's mobile phone,some systems generate OTPs on the server-side and send them to the user using an out-of-band channel such as SMS messaging. Finally, in some systems, OTPs are printed on paper that the user is required to carry with.