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





Любой полуприличный алгоритм в конечном итоге с большой вероятностью сгенерирует значение NULL где-нибудь в результирующем зашифрованном тексте.
Почему бы не сделать что-то вроде кодировка base-64 полученного двоичного объекта перед сохранением в БД? (пример реализации на C++).
Интересный маршрут OJ. Мы смотрим на осуществимость необратимого метода (все еще следя за тем, чтобы мы явно не извлекали данные для дешифрования), например. просто сохраните хеш для сравнения при отправке
Хранение хеша - хорошая идея. Однако, пожалуйста, обязательно прочтите Джеффа Вероятно, вы неправильно храните пароли.
Похоже, что разработчик, занимающийся этим, собирается обернуть существующее шифрование с помощью yEnc, чтобы сохранить целостность таблицы, поскольку данные должны быть извлечены, и это избавит от всей этой беспорядочной игры с бесконечным-невероятным .... эээ, изменение типов столбцов на закрепленные установки. Ура, ребята