Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2014, 19:13   #1
vadym62
Новичок
Джуниор
 
Регистрация: 17.03.2013
Сообщений: 2
По умолчанию Недопустимая длина данных для дешифрованния

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

Код:
  public DataTable Decrypt(DataTable ks)
        {
            string str2Decrypt;
            for (int curRow = 0; curRow < ks.Rows.Count; curRow++)
            {
                for (int curCol = 0; curCol < ks.Columns.Count; curCol++)
                {
                   
                        var s = ks.Rows[curRow][curCol].GetType();
                        if (ks.Rows[curRow][curCol].GetType() == i.GetType())
                        {
                            str2Decrypt = Convert.ToString(ks.Rows[curRow][curCol]);
                            str2Decrypt = Convert.ToBase64String(Encoding.UTF8.GetBytes(str2Decrypt));
                            //преобразуем строку в массив бaйт в кодировке ASCII
                            byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
                            byte[] str2DecryptBytes = Convert.FromBase64String(str2Decrypt);
                            byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue);
                            //----------------------------------------------------------
                            //формируем ключ для шифрования
                            PasswordDeriveBytes password = new PasswordDeriveBytes(passPhase, saltValueBytes, hashAlgorithm, passwordIterations);
                            //создаём экз класса для сим шифрования
                            RijndaelManaged symmCrypt = new RijndaelManaged();
                            // уставн режим связанных блоков
                            symmCrypt.Mode = CipherMode.CBC;
                            //массив байт ключа
                            byte[] keyBytes = password.GetBytes(keySize / 8);
                            //создаём экз класса - шифрователя
                            ICryptoTransform cryptoTransform = symmCrypt.CreateDecryptor(keyBytes, initVectorBytes);
                            //теперь можно шифровать данные :
                            //поток для чтения данных из опертив память
                            MemoryStream memStream = new MemoryStream(str2DecryptBytes);
                            //запускаем поток шифрования :
                            CryptoStream cryptostream = new CryptoStream(memStream, cryptoTransform, CryptoStreamMode.Read);
                            //создадим массив куда считывать
                            byte[] decryptBytes = new byte[str2DecryptBytes.Length];
                           // byte[] decryptByte = Encoding.UTF8.GetCharCount(decryptBytes);
                            // читаем из потока :
                            int count =
                            cryptostream.Read(decryptBytes, //что шифруем
                                0, //смещение от начало
                                decryptBytes.Length); //длина байта
                            //закрываем все потоки
                            cryptostream.Close();
                            //возьмём зашифрованые данные
                            memStream.Close();
                            //возвращаем зашифрованную строку:
                            string res = Encoding.ASCII.GetString(decryptBytes, 0, count);
                            ks.Rows[curRow][curCol] = res;
                        }

                    }
            }
            return ks;
vadym62 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Недопустимая длина массива знаков Base-64. vadym62 C# (си шарп) 0 17.05.2014 15:25
Макрос для копирования данных из формы для формирования таблицы xander2112 Microsoft Office Excel 12 06.05.2013 22:23
Ошибка "недопустимая escape-последовательность" Jamguranga Visual C++ 1 07.02.2013 21:32
Длина поля для Paradox Brook БД в Delphi 0 14.05.2009 14:54