Какой лучший поставщик симметричного шифрования .net по размеру? - PullRequest
2 голосов
/ 22 января 2011

У меня есть сценарий, в котором мне нужно сериализовать структуру в байтовый массив или строку, зашифровать ее и затем сохранить в таблице SQL.

Проблема в том, что, возможно, эта таблица будет состоять из миллионов строк, поэтому размер важен.

Я использовал BinaryFormatter для сериализации в байт [], преобразования его в Ascii и последующего сжатия с помощью поставщика RijndaelManaged.

До шифрования строка составляет около 230 байтов. Пост шифрование, это более 600 байтов.

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

Большое спасибо заранее,

Z

Ответы [ 2 ]

1 голос
/ 23 января 2011

Я нашел проблему.

Я сделал несколько вещей 1 / перестал использовать .net сериализацию.Я заметил, что сериализованный контент включает информацию о сборке (например, культуру, версию и т. Д.) С каждым объектом.Он даже делает это, когда вы переопределяете ISerializable и «катите свой собственный».Я понимаю, зачем это нужно для повторной сериализации ... но я не хочу хранить это в каждой строке.Вместо этого я просто создал строку с разделителями и преобразовал ее в байтовый массив.Я заново сериализую себя.

2 / Я перестал пытаться преобразовать байт [] в строку (с некоторой кодировкой) перед шифрованием.Теперь я просто передаю байт [] в риджиндал.

3 / Я начал использовать varbinary в таблице и записываю зашифрованный результат в виде необработанных байтов.Это кажется намного более эффективным, чем пытаться использовать какую-то кодировку.

Итак, со всем этим у меня есть конечный зашифрованный продукт размером до 150 байт.Большое улучшение!... также я еще не пытался сжать его.

Спасибо за помощь людям: -)

Z

1 голос
/ 22 января 2011

Как правило, алгоритмы шифрования только добавляют фиксированные издержки (для IV и, в случае алгоритмов асимметричного шифрования, зашифрованный симметричный ключ). Если вы видите увеличение размера в 2 раза, это означает, что вы делаете что-то до или после шифрования, что увеличивает размер данных.

Я бы удалил преобразование ascii - алгоритмы шифрования прекрасно работают с необработанными двоичными данными - и убедитесь, что вы храните в базе данных как необработанный двоичный двоичный объект, а не как base64-ing или аналогичный. Если проблема не устранена, опубликуйте код, который вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...