美文网首页
C# base-64 字符数组的长度无效

C# base-64 字符数组的长度无效

作者: meteor199 | 来源:发表于2017-11-01 21:24 被阅读0次

    问题场景

    公司项目需要加密传输,使用 AES 进行加密,加密后转为 base64 字符串进行网络传输。
    结果发现接收后解密错误。
    发现是 Convert.FromBase64String(data) 报错 base-64 字符数组的长度无效
    查看接收后的字符串中所有的+ 都变成了空格。。。
    据了解, UrlDecode 时,+ 会被解析为空格。而我在将 Request.InputStream 转为字符串后,使用了 UrlDecode

    解决

    方案一: 传输前进行编码,传输后进行解码

    传输前使用 UrlEncode 编码字符串:
    postData = HttpUtility.UrlEncode(base64Str);
    
    传输后进行解码:
     byte[] byts = new byte[Request.InputStream.Length];
     Request.InputStream.Read(byts, 0, byts.Length);
     string req = System.Text.Encoding.UTF8.GetString(byts);
     req = HttpUtility.UrlDecode(req);
    
     return req;
    

    方案二: 传输后不进行 Url 解码

     byte[] byts = new byte[Request.InputStream.Length];
     Request.InputStream.Read(byts, 0, byts.Length);
     string req = System.Text.Encoding.UTF8.GetString(byts);
    
     return req;
    

    相关文章

      网友评论

          本文标题:C# base-64 字符数组的长度无效

          本文链接:https://www.haomeiwen.com/subject/vgkgpxtx.html