Sachin Makwana Ответов: 1

Как сгенерировать memorystream из frombase64string?


Я сгенерировал случайную строку, зашифровал ее с помощью алгоритма DES.

теперь я пытаюсь расшифровать его, но сталкиваюсь с проблемой при преобразовании зашифрованной строки в поток памяти.

Что я уже пробовал:

мой код выглядит следующим образом:
public static MemoryStream Demo(string str)
       {
           MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(str));
           return memoryStream;
       }


Зашифрованная строка выглядит следующим образом:

rb3Cmy54Q8sANMHkelt9QzqOnM3enifu6v7AG5567oiqDk5ijwSwcSzfxUgHm4xD


Ошибка, которую я получаю при преобразовании зашифрованной строки в memorystream в режиме отладки, выглядит следующим образом

ReadTimeout = 'memoryStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
WriteTimeout = 'memoryStream.WriteTimeout' threw an exception of type 'System.InvalidOperationException'


есть ли какие-то проблемы с этим методом, или я делаю это неправильно?

1 Ответов

Рейтинг:
12

OriginalGriff

Проверьте свои данные: когда я копирую и вставляю ваш код и данные:

private void butTestIt_Click(object sender, EventArgs e)
    {
    string str = "rb3Cmy54Q8sANMHkelt9QzqOnM3enifu6v7AG5567oiqDk5ijwSwcSzfxUgHm4xD";
    MemoryStream ms = Demo(str);
    }

public static MemoryStream Demo(string str)
    {
    MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(str));
    return memoryStream;
    }
Я вообще не получаю никакой ошибки: буфер в порядке и имеет длину 48 байт.


Sachin Makwana

string str = " xSlDJ5yNyfxUkx9ri8KvVwHNFtYGnkqrei5dtkcwkio=";

пожалуйста, попробуйте выше строки. Он преобразует его в буфер, но также выбрасывает исключение ReadTimeOut и WriteTimeOut. Я всегда получаю значение опции CanTimeOut как false.

в соответствии с обсуждением здесь

http://stackoverflow.com/questions/8487860/readtimeout-threw-an-exception-when-converting-byte-array-to-stream

Я получаю исключение, так как значение CanTimeOut всегда ложно.

OriginalGriff

32 байта, никаких проблем.
И помните, что это ваш код, который я скопировал и вставил.
Так что же я делаю такого, что отличается от тебя?

Sachin Makwana

вы правы, 32 байта, никаких проблем. Но почему я получаю исключение ReadTimeOut и WriteTimeOut? Это вызывает у меня проблему, когда я применяю логику дешифрования в соответствии со следующей ссылкой.

http://www.codeproject.com/Articles/19538/Encrypt-Decrypt-String-using-DES-in-C

это дает мне ошибку "плохие данные". Итак, я подумал, что, возможно, делаю это неправильно или это происходит из-за исключения "ReadTimeOut" и "WriteTimeOut", которые я получаю в режиме отладки.

OriginalGriff

Ну, это должно быть как - то связано с вашими данными-если один и тот же код работает здесь, а не там, это должно быть то, что строковое значение, которое мы вводим, не то же самое (хотя это может выглядеть так).
Так что же происходит, когда вы скармливаете ему постоянную строку, как это сделал я? Думаю, это сработает.