I think the issue is nothing to do with encryption but is related to the decode/encode cycle shown on the right hand side of the diagram.
array<byte>(A) - Decode -> String (B) - Encode -> array<byte>(C)
Your code does not show the full details of this conversion but implies that you are using the ASCII encoder which can only handle byte values up to 127.
If the byte array (A) contains values in the range 128..255 these are decoded to ? characters in the intermediate string (B). Subsequent encoding back to a byte array (C) will not recreate the original data. See here
http://msdn.microsoft.com/en-us/library/system.text.asciiencoding.aspx[
^]
If you do want to get the array A as a string then take a look at the System.Convert class's To/FromBase64String methods.
Alan.