В сценарии, который вы описали, я не уверен, почему вы заботитесь; просто загрузите строку, расшифруйте ее, удалите, повторно зашифруйте и вставьте новые значения. Если несколько строк изменяются в результате, пусть будет так; в любом случае вы не можете сказать, что они были раньше, и вы говорите, что в строке нет ничего, что однозначно идентифицирует ее, поэтому система должна быть терпимой к потере информации
Я имею в виду, что у вас было два текстовые значения:
hello
goodbye
И вы зашифровали их, и они стали одинаковыми:
1235
1235
Либо одно из них теперь потеряно, и расшифровка 1235 всегда будет вызывать "привет" или что дешифрованный знает, что 1235 выдаст «привет» или «до свидания» - вы можете запустить оба из этих «привет» / «до свидания» через новый алгоритм, который выдает уникальные значения 111 и 222, так что вы можете безопасно стереть все 1235 из таблицы (delete from t where enctext = 1235
) и вставка 111 и 222 ..
Дублирование 1235 в таблице было бесполезно (вы не могли бы сказать, что эти 1235 расшифровываются на привет, но этот 1235 расшифровывается до свидания ", потому что тогда должно быть добавлено какое-то другое знание - знание, которое также может однозначно идентифицировать строку. Если все так, как вы говорите Вам не нужно беспокоиться о том, что было чем; либо было и то и другое, и вы можете либо восстановить исходные данные для повторного шифрования, либо нет