Сам нашел. Надо правильно формулировать вопросы. То, что я так невнятно описал реализуется стандартным способом "цифровой подписи". Для шифрования и дешифровки используем схему Эль Гамала. В качестве private-ключа используем пароль пользователя. Шифруем, например, его логин. В базе же храним public-key, сгенерировав его по произнесенному по телефону паролю (приват-ключу), в тот момент, когда заводили пользователя. Реализаций алгоритма, например,
https://gist.github.com/mindoftea/624f769b193215c534ac