Можете ли вы указать некоторые особенности, например, целевой язык программирования? Как вы хотите, чтобы OTP доставлялся (через SMS?).
Возможно, вы сможете использовать сервис Amazon Simple Notification для SMS: http://aws.amazon.com/sns/
Как правило, вам лучше позволить пользователю выбрать свой пароль с самого начала, если это возможно.
EDIT:
Что касается генерации OTP, вам, вероятно, лучше всего использовать что-то случайное, а не что-то хэшировать. Вы можете попробовать UUID версии 4. Подробности здесь: http://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29
В PHP есть метод uniqid (), который дает гарантированно уникальную строку, похожую на эту: 4b3403665fea6
Еще одна вещь, о которой я подумал в SMS, компания http://cdyne.com имеет веб-сервис, к которому можно подключиться для отправки SMS. У них есть услуга преобразования текста в речь для фактического совершения звонков.
Я до сих пор не понимаю, где OTP вписывается в вашу модель аутентификации, поэтому, чтобы я мог оказать вам гораздо большую помощь, вам нужно дать мне больше подробностей.