I have an extra question mark(s) when it converts to string.
Here is my code:
My Encryption method:
    public static Stream EncryptStream(Stream inputStream)
            {
                string key = "ThisIsMySuperSecureKey";
                byte[] keyBytes = Encoding.UTF32.GetBytes(key);
                Rfc2898DeriveBytes derviedKey = new Rfc2898DeriveBytes(key, keyBytes);
                RijndaelManaged rijndaelCSP = new RijndaelManaged();
                rijndaelCSP.Key = derviedKey.GetBytes(rijndaelCSP.KeySize / 8);
                rijndaelCSP.IV = derviedKey.GetBytes(rijndaelCSP.BlockSize / 8);
                var encryptor = rijndaelCSP.CreateEncryptor();
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
                //inputStream.Position = 0;
                byte[] toEncrypt = StreamToByteArray(inputStream);
                cs.Write(toEncrypt, 0, toEncrypt.Length);
                cs.FlushFinalBlock();
                MemoryStream output = new MemoryStream(ms.ToArray());
                ms.Close();
                return (Stream)output;
            }
My method to Convert Stream to Byte Array:
       public static byte[] StreamToByteArray(Stream inputStream)
        {
            var ms = new MemoryStream();
            inputStream.Position = 0;
            inputStream.CopyTo(ms);
            return ms.ToArray();
        }
        public static Stream DecryptStream(Stream inputStream)
        {
            string key = "ThisIsMySuperSecureKey";
            byte[] keyBytes = Encoding.UTF32.GetBytes(key);
            Rfc2898DeriveBytes derviedKey = new Rfc2898DeriveBytes(key, keyBytes);
            RijndaelManaged rijndaelCSP = new RijndaelManaged();
            rijndaelCSP.Key = derviedKey.GetBytes(rijndaelCSP.KeySize / 8);
            rijndaelCSP.IV = derviedKey.GetBytes(rijndaelCSP.BlockSize / 8);
            var decryptor = rijndaelCSP.CreateDecryptor();
            byte[] arrayOfEncrypedStream = StreamToByteArray(inputStream);
            MemoryStream ms = new MemoryStream(arrayOfEncrypedStream);
            CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);
            cs.Read(arrayOfEncrypedStream, 0, arrayOfEncrypedStream.Length);
            MemoryStream output = new MemoryStream(ms.ToArray());
            ms.Close();
            return output;
         }
My method to check if Stream is encrypted:
public static string IsCryptedStream(Stream cryptedStream)
        {
            string result = "";
            byte[] convStremToBytes = Encryption.StreamToByteArray(cryptedStream);
            return result = Encoding.UTF32.GetString(convStremToBytes);
        }
I read similar article with this issue, but it didn't work out. Need help. Thank you!!!
UPDATE:
    static void Main(string[] args)
    {
       byte[] streamBytes = Encoding.Unicode.GetBytes("Hello people");
       MemoryStream ms = new MemoryStream(streamBytes);
       var cryptedStream =  Encryption.EncryptStream(ms);
       var decryptStream = Encryption.DecryptStream(cryptedStream);
       string isCryptedStreamAfterDecryption = 
   Demo3.IsCryptedStream(decryptStream);
       Console.WriteLine($"After Decryption: {isCryptedStreamAfterDecryption}");
    }
Result: "Hello people???"
