Вопрос

В нашем продукте возникла ситуация, когда некоторые данные долгое время хранились в базе данных приложения в виде строки SQL (на выбор сервера MS SQL или sybase SQL в любом месте), которая была зашифрована с помощью функции Windows API. CryptEncrypt. (прямой и дешифруемый)

Проблема в том, что CryptEncrypt может выдавать на выходе NULL, а это означает, что, когда он хранится в базе данных, манипуляции со строками в какой-то момент усекают CipherText.

В идеале мы хотели бы использовать алгоритм, который будет создавать CipherText, который не содержит NULL, поскольку это приведет к наименьшему количеству изменений в существующих базах данных (изменение столбца со строкового на двоичный и код для работы с двоичными значениями вместо строк). просто расшифруйте существующие данные и повторно зашифруйте их с помощью нового алгоритма во время обновления базы данных.

Алгоритм не обязательно должен быть самым безопасным, поскольку база данных уже находится в достаточно безопасной среде (не в открытой сети или межсетевых сетях), но он должен быть лучше, чем ROT13 (который я почти могу расшифровать в своей голове). сейчас!)

редактировать:Кстати, есть ли какая-то конкретная причина для изменения зашифрованного текста на зашифрованный текст?зашифрованный текст кажется более широко используемым...

Это было полезно?

Решение

Любой полуприличный алгоритм с большой вероятностью сгенерирует значение NULL где-нибудь в результирующем зашифрованном тексте.

Почему бы не сделать что-то вроде кодировка base-64 полученный двоичный объект перед сохранением в БД?(пример реализации на C++).

Другие советы

Хранение хеша — хорошая идея.Однако, пожалуйста, обязательно прочитайте Джеффа Вероятно, вы неправильно храните пароли.

Это интересный маршрут, О Джей.Мы рассматриваем возможность использования необратимого метода (по-прежнему следя за тем, чтобы мы не извлекали данные для расшифровки явно), напримерпросто сохраните хеш для сравнения при отправке

Похоже, что разработчик, который этим занимается, собирается обернуть существующее шифрование yEnc чтобы сохранить целостность таблицы, поскольку данные должны быть доступны для извлечения, и это избавит от всей этой грязной возни с Infinite-Improbab....уххх, изменение типов столбцов в укоренившихся установках.Приветствую вас, ребята

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top