I haven't looked to closely, but at first glance.... You're writing to a (System.IO.MemoryStream), but you never move back to the start of the stream before trying to read it in again.
a.Seek(0, IO.SeekOrigin.Begin)
while rdlen < totlen
len = a.Read(bin, 0, 100)
encStream.Write(bin, 0...