Предположим, у нас есть идентификатор человека, которого мы хотим сохранить в тайне, и внешние приложения никогда не должны его знать (например, номер социального страхования). Если человек совершает действие, мы хотим сообщить внешнему приложению, что кто-то сделал то и это. Если человек делает несколько таких запросов, мы хотим, чтобы внешнее приложение знало, что оно от одного и того же пользователя.
Итак, нам нужен уникальный идентификатор, похожий на тень номера социального страхования. Мы можем сгенерировать уникальный идентификатор для каждого пользователя, но мы хотели бы избежать сохранения чего-либо. Поэтому мы думали, что зашифруем только номер социального страхования. Однако каждое зашифрованное значение номера социального страхования будет уникальным из-за IV, поэтому внешний пользователь не сможет сказать, были ли два действия выполнены одним и тем же пользователем.
Есть ли шифр, который позволяет это и достаточно безопасно или есть способ достичь этого без сохранения каких-либо дополнительных данных?
Редактировать: забыл упомянуть, что внешние приложения могут, в свою очередь, запрашивать дополнительные данные об этом конкретном пользователе. Поэтому нам нужен способ снова деанонимизировать / расшифровать идентификатор, который мы ему изначально отправили.