美文网首页
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 字符数组的无效长度”错误解决方案

    “base-64 字符数组的无效长度”错误解决方案 C# 出现base-64 字符数组的无效长度的解决办法 Bas...

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

    问题场景 公司项目需要加密传输,使用 AES 进行加密,加密后转为 base64 字符串进行网络传输。结果发现接收...

  • GO学习笔记(3) - 字符串操作

    字符长度 len得到字符长度 ,utf8.RuneCountInString字符串长度 字符转数组与字节 字符编码...

  • 判断为空

    C# 字符串为空 数组为空

  • Redis源码

    一、Redis数据结构: SDS SDS(动态字符串)包含字符数组buf[],字符数组现有长度len,字符数组分配...

  • 字符数组长度和字符串长度

    1.字符数组长度和字符串长度 char a[] = "hello"; 输入内容如下,因为char数组会在末尾添加一...

  • 17. 电话号码的字母组合

    思路: 分路递归,每次取一路可能拿到的字符加到字符串最后,直到字符串长度和咱们传入数组长度相同,加入数组。 代码:

  • SDS与C字符串的区别

    根据传统, C 语言使用长度为N+1的字符数组来表示长度为N的字符串, 并且字符数组的最后一个元素总是空字符'\0...

  • StringBuilder

    1.底层数据结构也是字符数组 2.初始化 数组长度(默认16) 字符串(长度 + 16) 3...

  • length()和length

    length()是字符串的一个方法,返回调用对象的长度 length是数组的一个属性,返回数组的长度 注意:当字符...

网友评论

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

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