Есть алгоритм OATH OCRA (RFC 6287). Принцип такой:
пользователь видит в браузере запрос сервера, вводит его в генераторе OTP и на генераторе отображается одноразовый пароль. Этот пароль пользователь вводит в браузере. Правда это совсем не то, что вы описали. Тут сам пароль генерируется на стороне клиента. Но, то что вы хотите не может быть безопасным. Одноразовые коды, которые получает пользователь по каналам SMS/push для их дальнешего прямого использования в качестве паролей должны быть рандомно сгенерированы, и должны не зависеть от входных данных. В противном случае вся ваша безопасность будет держаться на незнании/сложности вашего алгоритма. Жизнь доказала уже неоднократно, что "security through obscurity" это плохая защита.
Раз уж вы рассматриваете канал push для взаимодействия с клиентом, то посмотрете на методы аутентификации и электронной подписи использующие смартфон, как токен. Только не OTP-токен, а криптографический токен с ассиметричными ключами. Все намного проще, чем может показаться на первый взгляд. При необходимости подписать документ (для аутентификации аналогично), пользователю на смартфон приходит push сообщение, по тапу на него открываются подробности транзакции, которые пользователь принимает и подписывает уже привычным ему способом (PIN, отпечаток, FaceID).
Могу ответить на вопросы по такому софту или, если хотите, продемонстрировать реализацию такой аутентификации/подписи.