Лучший отвечающий
Memory Stream

Вопрос
-
есть такой код
string s = "что-небудь";
MemoryStream ms = new MemoryStream();
ms.Write(Encoding.UTF8.GetBytes(s),0,s.Length);MemoryStream ms2 = new MemoryStream();
string s1 = CryptDatas(ms,ms2, iv, key,true);string CryptDatas(Stream fin, Stream fout, byte[] rijnKey, byte[] rijnIV, bool b)
{
try
{
byte[] bin = new byte[100];
long totlen = fin.Length;
int len = 0;
long rdlen = 0;
Aes rijn = new AesManaged();
CryptoStream encStream = new CryptoStream(fout, rijn.CreateDecryptor(rijnIV, rijnKey), CryptoStreamMode.Write);
while (rdlen < totlen)
{
len = fin.Read(bin, 0, (int)fin.Length);
encStream.Write(bin, 0, len);
rdlen = rdlen + len;
}
//Encoding.UTF8.GetString(fout.ToArray(), 0, ms.ToArray().Length);
return "";
}проблема в том, что fin.Read не считывает из памяти содержимое потока и не записывает его в bin... по ходу писал всё правильно, а не хочет, подсобите кто знает поскорее плиз!!
1 апреля 2011 г. 19:15
Ответы
-
Нужно для первого потока выставить позицию в начало:
ms.Seek(0, SeekOrigin.Begin);
http://msdn.microsoft.com/ru-ru/library/system.io.stream.seek.aspx
- Помечено в качестве ответа Abolmasov DmitryModerator 4 апреля 2011 г. 8:15
4 апреля 2011 г. 5:43
Все ответы
-
MemoryStream ms = new MemoryStream(); ms.Write(Encoding.UTF8.GetBytes(s),0,s.Length); ms.Flush(); MemoryStream ms2 = new MemoryStream(); string s1 = CryptDatas(ms,ms2, iv, key,true); string CryptDatas(Stream fin, Stream fout, byte[] rijnKey, byte[] rijnIV, bool b) { try { byte[] bin = new byte[100]; long totlen = fin.Length; int len = 0; long rdlen = 0; Aes rijn = new AesManaged(); CryptoStream encStream = new CryptoStream(fout, rijn.CreateDecryptor(rijnIV, rijnKey), CryptoStreamMode.Write); while (rdlen < totlen) { len = fin.Read(bin, 0, (int)fin.Length); encStream.Write(bin, 0, len); rdlen = rdlen + len; } // вроде надо закрыть енкрCтрим чтоб все данные перешли в мемори стрим encStream.Close(); //Encoding.UTF8.GetString(fout.ToArray(), 0, ms.ToArray().Length); return ""; }
Don't forget to mark the correct answer Blog
1 апреля 2011 г. 21:22 -
все равно не помогает,
while (rdlen < totlen) { len = fin.Read(bin, 0, (int)fin.Length); encStream.Write(bin, 0, len); rdlen = rdlen + len; }
етот кусок кода выполняется бесконечно, так как данные при считывании не запысываются в bin2 апреля 2011 г. 6:15 -
А если так :
do { len = fin.Read(bin, 0, 100); encStream.Write(bin, 0, len); rdlen = rdlen + len; }
while (len>0)
Don't forget to mark the correct answer Blog2 апреля 2011 г. 7:02 -
все равно не катит
fin.Read(bin, 0, 100);
- етот код должен считывать з Memory Stream данные и записывать их в буфер bin, а он не читает, смотрел отладкой после етого шага bin остается пустым!!!!
использую Silverlight2 апреля 2011 г. 10:52 -
Нужно для первого потока выставить позицию в начало:
ms.Seek(0, SeekOrigin.Begin);
http://msdn.microsoft.com/ru-ru/library/system.io.stream.seek.aspx
- Помечено в качестве ответа Abolmasov DmitryModerator 4 апреля 2011 г. 8:15
4 апреля 2011 г. 5:43