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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование, Помогите разобраться 
V
    Опции темы
WERITAS
Дата 25.12.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


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

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



Доброго времени суток! Помогите пожалуйста с шифрованием в NET. Вот-с накидал такой вот код:
Код

using System.IO;
using System.Security.Cryptography;
namespace WinAppCryptoExample
{
    public partial class Form1 : Form
    {
        public RijndaelManaged des = new RijndaelManaged();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream(Application.StartupPath + "\\pass.dat", FileMode.Create, FileAccess.Write);
            CryptoStream cs = new CryptoStream(fs, des.CreateEncryptor(), CryptoStreamMode.Write);
            byte[] mass = Encoding.ASCII.GetBytes(textBox1.Text);
            cs.Write(mass, 0, mass.Length);
            cs.Close();
            fs.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string result = null;
            FileStream fs = new FileStream(Application.StartupPath + "\\pass.dat", FileMode.Open, FileAccess.ReadWrite);
            CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(), CryptoStreamMode.Read);
            if (fs.Length > 0)
            {
                byte[] mass = new byte[fs.Length];
                cs.Read(mass, 0, (int)fs.Length);
                result = Encoding.ASCII.GetString(mass);
            }
            else result = "";
            cs.Close();
            fs.Close();
            textBox2.Text = result;
        }
    }
}

Если последовательно нажимать кнопки 1 и 2, то всё работает. А вот когда нужно просто дешифровать из файла: нажимаю кнопку 2 и приложение вылетает. Как такое исправить?


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
tol05
Дата 25.12.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а ты мануал по RijndaelManaged почитай smile

метод CreateDecryptor() без параметров требует, чтобы свойства уже были установлены. 
Цитата

Creates a symmetric decryptor object with the current Key property and initialization vector (IV). 

а где ты их устанавливаешь? Нигде. Поэтому и не работает. Выход - в конструкторе их создать и запомнить как поля класса, например.

а почему работает
Цитата(WERITAS @  25.12.2007,  18:46 Найти цитируемый пост)
Если последовательно нажимать кнопки 1 и 2

опять читаем мануал, но уже про CreateEncryptor() 
Цитата

Creates a symmetric encryptor object with the current Key property and initialization vector (IV). 

Цитата

If the current Key property is a null reference (Nothing in Visual Basic), the GenerateKey method is called to create a new random Key. If the current IV property is a null reference (Nothing in Visual Basic), the GenerateIV method is called to create a new random IV.

т.е. при создании Encryptor-а поля твоего des инициализируются и используются позднее, при работе CreateDecryptor()


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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