输入不是StreamReader的有效Base-64字符串

时间:2017-05-02 15:56:32

标签: c# encryption

我从API服务器获取加密字符串

try
{
    HttpWebRequest _request = (HttpWebRequest)WebRequest.Create(_url);
    _request.KeepAlive = false;

    using (HttpWebResponse _response = (HttpWebResponse)_request.GetResponse())
    {
        using (Stream _stream = _response.GetResponseStream())
        {

            using (StreamReader _reader = new StreamReader(_stream, Encoding.UTF8))
            {
                string _content = _reader.ReadToEnd();
                Console.WriteLine(Decrypt(_content.ToString(), _key, _iv));
            }
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}

但是我收到了一个错误:

  

System.FormatException:输入不是有效的Base-64字符串   包含一个非基础64个字符,两个以上的填充字符,或   填充字符中的非法字符。

奇怪的是,如果我复制返回的字符串,它可以解密:

string str = "jcXddetnrE6ujO/Al1pqSRPK1+JXfal1XgANOsojPV9SUMOjnBgW09AacxhOUGYWZQoUlfsTEk/8Al1NuX/Gk/S2utUCLeEqHLrXwP5tkFgrrqUffHOzxWyD5vwIY2zQ";
Console.WriteLine(Decrypt(str, _key, _iv));

StreamReader中的字符串是否必须以某种方式转换?

1 个答案:

答案 0 :(得分:1)

  

奇怪的是,如果我复制了返回的字符串,那么解密就好了

确保在解密之前删除前导和尾随引号和空格。手动复制字符串时可能已删除这些内容。