Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

RSACryptoServiceProvider C#

32K
02 апреля 2009 года
LLIbIcpEP
32 / / 06.07.2008
Доброго времени суток.
Столкнулся с необходимостью шифровать данные при передаче по сети. Почитал мсдн, нашел там пример, переделал под себя, все заработало (в мсдн он немного громоздкий был).
Ну и уже в ходе использования программы столкнулся с ошибкой. Начал копать, и докопался до такой строчки:
 
Код:
byte[] EncryptedByte = RSA.Encrypt(Encoding.Default.GetBytes(str), false);

Вот именно в ней возникает ошибка, при попытке зашифровать данные большого объема. Маленькие данные шифруются и расшифровываются на ура. Если данные большего размера, вылезает зксепшн "Неопознанная ошибка". Помогите отыскать грабли, буду очень благодарен.
32K
02 апреля 2009 года
LLIbIcpEP
32 / / 06.07.2008
upd: Пробовал вернуть все в исходное состояние, как на мсдн, все равно то-же самое.
5
02 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: LLIbIcpEP
upd: Пробовал вернуть все в исходное состояние, как на мсдн, все равно то-же самое.


Шифровать RSA большой объем данных очень накладно - это требует нехилых вычислительных ресурсов.

Обычно поступают по-другому. Создают сессионный (временный) ключ для какого-нибудь симметричного алгоритма (например DES3) и передают его другой стороне зашифрованным асимметричным алгоритмом вроде RSA. Далее обмен информацией осуществляется посредством выбранного симметричного алгоритма.

32K
02 апреля 2009 года
LLIbIcpEP
32 / / 06.07.2008
Цитата: hardcase
Шифровать RSA большой объем данных очень накладно - это требует нехилых вычислительных ресурсов.

Обычно поступают по-другому. Создают сессионный (временный) ключ для какого-нибудь симметричного алгоритма (например DES3) и передают его другой стороне зашифрованным асимметричным алгоритмом вроде RSA. Далее обмен информацией осуществляется посредством выбранного симметричного алгоритма.



Спасибо, учту. И все-же, в программе шифруются MySQL запросы. Я бы не назвал MySQL запрос, в котором используется несколько раз SUBSTRING_INDEX, слишком большими данными, что бы отказываться от RSA. Или я не прав? Если нет - то поступлю по Вашему совету...

5
02 апреля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: LLIbIcpEP
Спасибо, учту. И все-же, в программе шифруются MySQL запросы.

А разве мускул не предоставляет соединений через SSL?

Цитата: LLIbIcpEP
Я бы не назвал MySQL запрос, в котором используется несколько раз SUBSTRING_INDEX, слишком большими данными, что бы отказываться от RSA.

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

32K
02 апреля 2009 года
LLIbIcpEP
32 / / 06.07.2008
Цитата: hardcase
А разве мускул не предоставляет соединений через SSL?

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



Дело в том, что клиентам совсем не нужно иметь прямой доступ к мускулу. У пользователей программы две категории, простые пользователи, и администраторы. Простые пользователи и вовсе не отправляют запросов на мой сервер, только определенный набор данных, из которых сервер генерирует запрос. У администраторов имеется возможность посылать произвольный запрос на сервер. Так что SSL тут слегка неуместен.
Да и команды от простых пользователей иногда выходят большими. А ответ от сервера вовсе не шифруется. И эксепшн вываливается именно в клиенте, еще до попытки соединения с сервером. А именно при шифровании.
Ладно, спасибо. Если идей по поводу этой ошибки нету, буду разбираться с симметричными алгоритмами.

6.6K
08 апреля 2009 года
Ordos
105 / / 02.11.2007
Создавай CryptoStream (в параметре указываешь нужный алгоритм) и кодируй данные, пропуская их через этот поток
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог