解密函数不起作用c#

时间:2016-12-02 13:43:24

标签: c# encryption cryptography

我正在尝试编写一个'enrypt-decrypt'程序,我在解密函数方面遇到了一些问题。

不知何故,我无法将流阅读器“ReadToEnd()”保存到名为“text”的空字符串中。

我在互联网上发现了这个功能,我尝试通过更改变量名称并使用“IDisposed”而不是“using”来解决它。我无法解决它。

static string Decrypt(byte[] cipherText, byte[] Key, byte[] IV)
{
    string text = String.Empty;
    // Create an Aes object
    // with the specified key and IV.
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = Key;
        aesAlg.IV = IV;

        // Create a decrytor to perform the stream transform.
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

        // Create the streams used for decryption.
        using (MemoryStream msDecrypt = new MemoryStream(cipherText))
        {
            using (CryptoStream cs = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Write))
            {

               using (StreamReader srDecrypt = new StreamReader(cs) )
               {
                   // Read the decrypted bytes from the decrypting 
                    stream

                // and place them in a string.
                    text = srDecrypt.ReadToEnd();
                }

            }
        }
    }
   return text;
}

文本字符串仅在此函数中定义,错误出现在以下行中:

text = srDecrypt.ReadToEnd();

它说:

  

Crypt.cs(145,29):错误CS0136:名为“text”的局部变量不能   在此范围内声明,因为它会给出不同的含义   'text',已在'父或当前'范围内用于表示   别的东西编译失败:1个错误,0个警告

1 个答案:

答案 0 :(得分:-1)

我想你在这里错过了一些代码,因为这是无效的:

// Read the decrypted bytes from the decrypting 
stream