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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> асимметричное шифрование 
:(
    Опции темы
andrey_pro
Дата 26.12.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



мне нужно шифровать и расшифровывать определенный файл
подскажите для это алгоритм асимметричного шифрования

 smile 
PM MAIL   Вверх
tol05
Дата 26.12.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



например RSA
класс System.Security.Cryptography.RSACryptoServiceProvider 


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
andrey_pro
Дата 26.12.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



RSA не получилось

не может шифровать большие объемы, а мне файл шифровать

чем еще можно? желательно с примерами

PM MAIL   Вверх
SKrivosein
Дата 26.12.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


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

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



Насколько я знаю в.NET стандартно существуют только RSA и DSA, причем второй тебе совсем не подходит.
Какого размера файлы и действительно нужен ассиметрический алгоритм? Например симетрический тебе сразу код кину.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
andrey_pro
Дата 26.12.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



мне нужно шифровать одним ключом а расшифровывать другим. Это ассиметричное шифрование.

Неужели в Net нет стандартной функции шифровать таким алгоритмом большой объем инф-и?

Добавлено через 4 минуты и 4 секунды
может есть у кого примеры?
PM MAIL   Вверх
SKrivosein
Дата 26.12.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


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

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



Что есть ассиметричное шифрование это понятно, но готового примера у меня нет.
Ты не написал какого размера файлы.
Попробуй почитать здесь


Это сообщение отредактировал(а) SKrivosein - 26.12.2009, 21:11


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
tol05
Дата 26.12.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(andrey_pro @  26.12.2009,  18:22 Найти цитируемый пост)
не может шифровать большие объемы, а мне файл шифровать

с чего Вы это взяли?

вот пример


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Heinzz
Дата 27.12.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 9



Насколько мне известно, не принято шифровать большие объемы информации асимметрично.
Обычно асимметрично шифруется симметричный ключ сгенерированный клиентом и дальнейшее шифрование идет уже этим ключем. 


--------------------
user posted image
PM MAIL   Вверх
artstalker
Дата 31.12.2009, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Heinzz @ 27.12.2009,  18:47)
Насколько мне известно, не принято шифровать большие объемы информации асимметрично.
Обычно асимметрично шифруется симметричный ключ сгенерированный клиентом и дальнейшее шифрование идет уже этим ключем.

Подтверждаю. Так и есть. В итоге зашифровывать вы будуете одним ключём, а расшифровывать - другим
PM MAIL   Вверх
kobra
Дата 1.1.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



в принципе не проблема
Код

    private static string Encript(string s, System.Xml.Linq.XElement publicKey)
    {
        string result;
        try
        {
            RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
            cryptoServiceProvider.FromXmlString(publicKey.ToString());
            byte[] tempByteArray;
            tempByteArray = System.Text.Encoding.UTF8.GetBytes(s);
            System.Collections.Generic.List<byte> tempByteList = new System.Collections.Generic.List<byte>();
            System.Collections.Generic.List<byte[]> tempByteArrayList = new System.Collections.Generic.List<byte[]>();
            byte[][] tempByteDubleArry;
            foreach (byte b in tempByteArray)
            {
                tempByteList.Add(b);
            }
            while (tempByteList.Count > 0)
            {
                int c = 5;//размер шифруемого блока. кажется болше 50 не работает
                if (tempByteList.Count >= c)
                {
                    tempByteArrayList.Add(tempByteList.GetRange(0, c).ToArray());
                    tempByteList.RemoveRange(0, c);
                }
                else
                {
                    c = tempByteList.Count;
                    tempByteArrayList.Add(tempByteList.GetRange(0, c).ToArray());
                    tempByteList.RemoveRange(0, c);
                }
            }
            tempByteDubleArry = tempByteArrayList.ToArray();
            for (int i = 0; i < tempByteDubleArry.Length; i++)
            {
                byte[] b = tempByteDubleArry[i];
                byte[] b1 = cryptoServiceProvider.Encrypt(b, true);
                tempByteDubleArry[i] = b1;
            }
            tempByteList.Clear();
            foreach (byte[] ba in tempByteDubleArry)
            {
                foreach (byte b in ba)
                {
                    tempByteList.Add(b);
                }
            }
            tempByteArray = tempByteList.ToArray();
            result = System.Text.Encoding.Default.GetString(tempByteArray);

            
           // Console.WriteLine(result);

        }
        catch
        {
            result = null;
        }
        return result;
    }

    private static string Decrypt(string s, System.Xml.Linq.XElement privateKey)
    {
        string result;
        try
        {
            RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
            cryptoServiceProvider.FromXmlString(privateKey.ToString());
            byte[] tempByteArray;
            tempByteArray = System.Text.Encoding.Default.GetBytes(s);

          //  Console.WriteLine(s);

            System.Collections.Generic.List<byte> tempByteList = new System.Collections.Generic.List<byte>();
            System.Collections.Generic.List<byte[]> tempByteArrayList = new System.Collections.Generic.List<byte[]>();
            byte[][] tempByteDubleArry;
            foreach (byte b in tempByteArray)
            {
                tempByteList.Add(b);
            }
            while (tempByteList.Count > 0)
            {
                int c = cryptoServiceProvider.KeySize / 8;
                if (tempByteList.Count >= c)
                {
                    tempByteArrayList.Add(tempByteList.GetRange(0, c).ToArray());
                    tempByteList.RemoveRange(0, c);
                }
                else
                {
                    c = tempByteList.Count;
                    tempByteArrayList.Add(tempByteList.GetRange(0, c).ToArray());
                    tempByteList.RemoveRange(0, c);
                }
            }
            tempByteDubleArry = tempByteArrayList.ToArray();
            for (int i = 0; i < tempByteDubleArry.Length; i++)
            {
                byte[] b = tempByteDubleArry[i];
                byte[] b1 = cryptoServiceProvider.Decrypt(b, true);
                tempByteDubleArry[i] = b1;
            }
            tempByteList.Clear();
            foreach (byte[] ba in tempByteDubleArry)
            {
                foreach (byte b in ba)
                {
                    tempByteList.Add(b);
                }
            }
            tempByteArray = tempByteList.ToArray();
            result = System.Text.Encoding.UTF8.GetString(tempByteArray);
        }
        catch (ExecutionEngineException e)
        {
            result = e.Message;
        }
        return result;
    }
если не ошибаюс код рабочи. если не испортил конечно smile
PM MAIL   Вверх
Heinzz
Дата 1.1.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 9



мне не нравится такой подход smile 


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

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


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

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


 




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


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

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