Поиск:

Ответ в темуСоздание новой темы Создание опроса
> После шифров.и расшифр.возвращается пустое знач. Помогите найти ошибку (недоработку) 
:(
    Опции темы
AvnAvn
Дата 16.10.2013, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дано: IIS6 c Framework 4.0.30319 Шифруем строку данных, помещаем ее через MemoryStream в строку Base64 и расшифровываем эту строку.

Программа VBScript в ASP.NET:
 'Шифрование***************************************​­******************************************
Dim Key As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Ключ
Dim IV As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Вектор инициализации
Dim SlugString

 'Создаём экземпляр класса RijndaelManaged
 Dim RMCrypto As New System.Security.Cryptography.RijndaelManaged
 'Создаём MemoryStream туда будет записана зашифрованная информация
Dim Memstream As New System.IO.MemoryStream
 MemStream.Position = 0
 'Создаём CryptoStream
 Dim CryptStream As New System.Security.Cryptography.CryptoStream(Memstrea​­m, RMCrypto.CreateEncryptor(Key, IV), System.Security.Cryptography.CryptoStreamMode.Writ​­e)
 'Создаём StreamWriter для записи данных в CryptoStream
 Dim SWriter As New SyStem.IO.StreamWriter(CryptStream)
 'Пишем что-нибудь в CryptoStream
 SWriter.WriteLine("Эта информация зашифрована симметричным алгоритмом Rijndael!")
 CryptStream.FlushFinalBlock()
 'Читаем из MemStream
 MemStream.Position = 0
 response.write("MemStream.Length=" & trim(MemStream.Length))
 SlugString = Convert.ToBase64String(MemStream.ToArray())

 response.write(" SlugString=""" & trim(SlugString) & """")
 'В массиве MemStream.ToArray() 16 элементов, в каждом элементе массова - двухбайтовый кода символа

'Закрываем все объекты
SWriter.Close()
 CryptStream.Close()
 Memstream.close()
 Memstream = Nothing
 CryptStream = Nothing
 SWriter = Nothing

 '***************** зашифрованные данные в SlugString Base64

 'Создаём экземпляр класса RijndaelManaged
 Dim Memstream1 As New System.IO.MemoryStream
 Dim RMCrypto1 As New System.Security.Cryptography.RijndaelManaged
 response.write("<br />Чтение данных для расшифровки: Len(SlugString)=" & Len(SlugString))
 response.write("<br />System.Text.Encoding.Default.GetBytes(SlugString​­).Length=" & trim(System.Text.Encoding.Default.GetBytes(SlugStr​­ing).Length) )

 MemStream1.Position = 0
 ' конвертируем строку Base64 в byte массив
MemStream1.Write(Convert.FromBase64String(SlugStri​­ng), 0, Convert.FromBase64String(SlugString).Length)
 Response.write("<br />MemStream1.Length=" & trim(MemStream1.Length) )
 'Создаём CryptoStream1
 Dim CryptStream1 As New System.Security.Cryptography.CryptoStream(Memstrea​­m1, RMCrypto1.CreateDecryptor(Key, IV), System.Security.Cryptography.CryptoStreamMode.Read​­)
 'Создаём StreamReader для чтения данных из CryptoStream1
 Dim SReader As New SyStem.IO.StreamReader(CryptStream1)
 'Читаем расшифрованную информацию из CryptoStream и пишем её в форму
Response.write("<br />SReader.ReadToEnd().Length=" & trim(SReader.ReadToEnd().Length)) 'Возвращает SReader.ReadToEnd().Length=0
 Response.write(" Расшифровано: """ & trim(SReader.ReadToEnd()) & """") 'Возвращает ПУСТУЮ СТРОКУ: Расшифровано: ""

 'Закрываем все объекты
SReader.Close()
 CryptStream1.Close()
 Memstream1.close()
 SReader = Nothing
 CryptStream1 = Nothing
 Memstream1 = Nothing

При использовании вместо MemoryStream файлового потока, сохранения в файл - чтения из файла - все работает. Единственное дополнение, добавленное мною при использовании MemoryStream - это команда CryptStream.FlushFinalBlock() после SWriter.WriteLine("Эта информация...").

Вопрос: Почему SReader.ReadToEnd() возвращает пустую строку?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ASP | Следующая тема »


 




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


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

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