В нашем продукте есть ситуация, когда в течение длительного времени некоторые данные сохранялись в базе данных приложения в виде строки SQL (выбор сервера MS SQL или Sybase SQL в любом месте), которая была зашифрована с помощью функции Windows API CryptEncrypt . (прямой и дешифруемый)
Проблема в том, что CryptEncrypt может выдавать значения NULL в выводе, что означает, что при сохранении в базе данных, манипуляции со строками в какой-то момент усекают CipherText.
В идеале мы хотели бы использовать алгоритм, который будет производить CipherText, который не содержит NULL, так как это приведет к наименьшему количеству изменений в существующих базах данных (изменение столбца со строки на двоичный и код для обработки вместо двоичного строк) и просто расшифровывать существующие данные и повторно шифровать с новым алгоритмом во время обновления базы данных.
Алгоритм не обязательно должен быть максимально безопасным, поскольку база данных уже находится в достаточно безопасной среде (не в открытой сети / между сетями), но должна быть лучше, чем ROT13 (которую я могу почти расшифровать) в моей голове сейчас!)
edit: btw, есть какая-то конкретная причина для замены зашифрованного текста на зашифрованный? шифртекст кажется более широко используемым ...