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

问题场景

公司项目需要加密传输,使用 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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 12,952评论 2 17
  • CTF中那些脑洞大开的编码和加密 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问...
    查无此人asdasd阅读 6,078评论 0 19
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 我不知道的时候 你为什么也不知道。 我饿了的时候 你为什么在吃早餐。
    留子尧阅读 457评论 1 2
  • 入门简书 今天刚刚尝试了一下简书的Markdowm功能,感觉甚是强大,因此在这里写一篇文章分享一下Markdown...
    suporka阅读 806评论 0 4