http空格传输、加号传输、Base64加号变空格问题

  • Base64加密后的数据通过http传输后,后台接收到的数据会出现空格的问题分析
  • 空格:url编码后,会用+号替换原来位置的空格
  • 加号(+):url编码后,会用%2替换原来位置的+
  • form表单提交,默认是application/x-www-form-urlencoded,因此会对参数进行urlencode
  • http请求传输参数

http传输参数的时,url编码后会将url传输的参数【空格】转变为【+】号
如下:

urlencode之前:www.baidu.com?name=zhang san
urlencode之后:www.baidu.com?name=zhang+san

urlencode之前:www.baidu.com?name=zhang+san
urlencode之后:www.baidu.com?name=zhang%2san

由上可见,+会变为%2,空格会变为+

  • base64加密参数Http传输

base64中,加号(+)是base64编码的一部分,如果将+号转变为空格,就会导致解密失败。

现在应该很清楚为什么base64后,通过http请求后,数据丢失的原因了吧。

1、Base64加密后的数据:

gLi5lSf1FW+r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU+J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ+tCegU8xj85Xp7bG3Fyfd6k=

在对Base64加密进行http传输时,后台收到的数据会出现空格的现象。如下

gLi5lSf1FW r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ tCegU8xj85Xp7bG3Fyfd6k=

这就导致传输的数据和接收的数据不一致,导致解密失败

2、base64 http请求,如何将+号进行urlEncode

设置http请求头(对参数进行urlEncode操作)
Content-Type: application/x-www-form-urlencoded

3、Base64 urlEncode后:

gLi5lSf1FW%2r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU%2J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ%2tCegU8xj85Xp7bG3Fyfd6k=

4、后台接收的数据:

gLi5lSf1FW+r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU+J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ+tCegU8xj85Xp7bG3Fyfd6k=

这时,接收的base64数据和传输的是结果一致,可以正常解密了。

  • 什么是:application/x-www-form-urlencoded

简单的讲就是form表单提交,from表单提交会默认对参数进行encode操作。
浏览器会对form表单的数据进行url编码,把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url

如果表单有加号(+),url编码后会变为%2,这时后接收数据后,对参数解码后转变为+号
如果表单有空格,url编码后会变为+,后台接收数据化,解码变为空格

如果是用的程序写的http请求,需要加一个请求头Content-Type: application/x-www-form-urlencoded,这样就会对参数进行加密操作

如有什么疑问和建议,请留言

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值