Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RSACryptoServiceProvider, Плохие данные 
:(
    Опции темы
VisualProgrammerNET
Дата 16.8.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



Сделал маленький учебный (для себя) код-шифровальщик данных. Вот:

Код

//encrypt
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            UnicodeEncoding uni = new UnicodeEncoding();
            byte[] input = uni.GetBytes(textBox2.Text);            
            RSA.ImportParameters(RSA.ExportParameters(false));
            byte[] encrypt = RSA.Encrypt(input, false);
            RSACryptoServiceProvider RSA2 = new RSACryptoServiceProvider();
            RSA2.ImportParameters(RSA2.ExportParameters(true));
            byte[] decrypt = RSA2.Decrypt(encrypt, false);
            MessageBox.Show(uni.GetString(decrypt));
            //encrypt end


Запускаю. В текстбоксе пишу просто "FFF". Вылетает эксепшн на строке
Код

byte[] decrypt = RSA2.Decrypt(encrypt, false);

с пометкой "Плохие данные". Что плохого в моих данных?  smile 


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
arilou
Дата 16.8.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 21
Всего: 61



VisualProgrammerNET, какой exception?


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
VisualProgrammerNET
Дата 16.8.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



обычный, RSACryptoServiceProviderException


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
ivashkanet
Дата 16.8.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(VisualProgrammerNET @  16.8.2006,  23:27 Найти цитируемый пост)
RSACryptoServiceProviderException

Конкретнее. Что пишет?
PM MAIL WWW ICQ   Вверх
VisualProgrammerNET
Дата 17.8.2006, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



я ж и говорю, просто при дебагге жёлтое окошко указывает на вышеприведённую строку и пишет "плохие данные".

Попробуйте скопировать код и скомпилить (при прочих добавлениях, естественно). Может у меня чё-то глючит?


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
ivashkanet
Дата 17.8.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



VisualProgrammerNET, разведка боем показала, что зашифровать и расшифровать сообщение разными шифровальщиками просто так не выйдет. 
Оно и понятно, что тогда за шифровка такая получается  smile 
А для того чтобы вышло нужно использовать что-то типа ключа, либо еще что-то что будет гарантироваь возможность расшифровки сообщения.
Капай в этом направлении smile 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 17.8.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Дело в том, что ключ для шифрования и расшифровки должен быть один и тот же, а у тебя ImportParameters делается из одного RSACryptoServiceProvider, а ExportParameters при расшифровке - из другого. Так что либо нужно инициализировать RSA и RSA2 одним и тем же ключом (как советует ivashkanet), либо юзать для Export/ImportParameters один и тот же RSACryptoServiceProvider:

Код
using System;
using System.Security.Cryptography;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main()
        {
            string text = Console.ReadLine();

            RSACryptoServiceProvider RSA_key = new RSACryptoServiceProvider();

            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            UnicodeEncoding uni = new UnicodeEncoding();
            byte[] input = uni.GetBytes(text);
            RSA.ImportParameters(RSA_key.ExportParameters(false));
            byte[] encrypt = RSA.Encrypt(input, false);

            RSACryptoServiceProvider RSA2 = new RSACryptoServiceProvider();
            RSA2.ImportParameters(RSA_key.ExportParameters(true));
            byte[] decrypt = RSA2.Decrypt(encrypt, false);

            Console.WriteLine(uni.GetString(decrypt));
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
VisualProgrammerNET
Дата 19.8.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



А как быть, если я шифрую данные одной программой, а расшифровывать буду другой? Это сработает? Или нужно создать какую-нибудь общую dll-ку с шифратором?

Добавлено @ 18:18 
И почему не работает вот этот код? Опять же "плохие данные"
Код

            RegistryKey RegK = Registry.LocalMachine;
            RegK = RegK.CreateSubKey("Software\\ForeWorld Software\\Remote Manager\\");

            
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            RSACryptoServiceProvider RSA_key = new RSACryptoServiceProvider();
            UnicodeEncoding uni = new UnicodeEncoding();
            byte[] input = uni.GetBytes(textBox2.Text);            
            RSA.ImportParameters(RSA_key.ExportParameters(false));
            byte[] encrypt = RSA.Encrypt(input, false);      
            RegK.SetValue("Login", textBox1.Text);
            RegK.SetValue("Pass", uni.GetString(encrypt));
            input = uni.GetBytes((string)RegK.GetValue("pass"));
            RSACryptoServiceProvider RSA2 = new RSACryptoServiceProvider();
            RSA2.ImportParameters(RSA_key.ExportParameters(true));
            byte[] decrypt = RSA2.Decrypt(input, false);
            MessageBox.Show(uni.GetString(decrypt));



--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 19.8.2006, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(VisualProgrammerNET @  19.8.2006,  18:06 Найти цитируемый пост)
А как быть, если я шифрую данные одной программой, а расшифровывать буду другой? Это сработает? Или нужно создать какую-нибудь общую dll-ку с шифратором?

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


--------------------
user posted image
PM MAIL WWW   Вверх
VisualProgrammerNET
Дата 29.8.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



Сделаем вопрос более общим  smile 

Как зашифровать пароль, записать его куда-нибудь (напр, реестр), и потом считать его и расшифровать? Чё-то у меня одна ботва получается...  smile 


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.