java后台接口数据是如何加密传输的

发布于 2022-09-01 22:19:41 字数 55 浏览 15 评论 0

看到很多url的参数值是一长串看不懂的字符串,肯定是加密了。那么java服务器一般是怎么做的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葬心 2022-09-08 22:19:41

一般情况你看到的应该不算是"加密" 而是"URL编码" (大多数情况)。
"URL编码"通常是为了处理参数里有不可用字符的问题。

比如

  • 下载时http://localhost/download?filename=新建文档+备份 副本.doc
    这样的连接必然会有问题,中文会乱码,加号会被当作连接符,而空格会被服务器当作结束,剩下的内容就被丢弃了。

  • 所以你后台接到的请求实际上会是这样 http://localhost/download?filename=??????

  • 即便你后台强制转码new String(filename.getBytes("iso-8859-1"),"UTF-8")
    那也只会是http://localhost/download?filename=新建文档备份

为了解决这样的问题所以就会用到URL编码,他的作用其实和html的实体字符一个意思,就是为了不让浏览器/服务器自作多情的进行解析
而且后台的服务器一般都可以自动处理URL编码,将他们还原回原来的字符串,所以你获取参数时一般不需要你手动解码,直接可以获取到解码后的原字符串。

在java里可以用java.net.URLEncoder.encode(str,charset)实现;

  • 例如刚刚那个用java可以这样写
    response.sendredirect("http://localhost/download?filename=" + URLEncoder.encode("新建文档+备份 副本.doc","UTF-8"));

  • 最终显示就会是这个样子
    http://localhost/download?filename=%e6%96%b0%e5%bb%ba%e6%96%87%e6%a1%a3%2b%e5%a4%87%e4%bb%bd+%e5%89%af%e6%9c%ac.doc

残月升风 2022-09-08 22:19:41

每个业务逻辑都不一样,得看具体的场景:
一般的,url加密处于以下目的(欢迎补充):
1 base64编码保护由于&等引起的截断攻击
2 对称加密保护敏感数据,在服务器端可解析,Token的一种可能但不是唯一的实现原理
3 (md5等)hash加密做签名保护另一个数据的完整性
4 政策规定必须加密
5 URL唯一,这时候加密的参数是全球唯一的,这个可以在订单啊,啥里面用
6 混淆视听的加密,这个其实没啥用,加密玩的
......
在服务器端,一般是两种:

  • 对称加密是可以解析的,因为它持有解钥

  • 其他md5,一般只在服务器端做检验。

具体实现怎么加密,自己写一个试试就知道了。

一种简单的对称加密算法的原理是:
假如A需要加密,A{en}B=>C 此时发送C,服务器得到C后,通过C{de}B得到A。这个是两方都持有解钥的。还有非常多的实现,这个最low。

断肠人 2022-09-08 22:19:41

url 里可以base64编码
不过base64不是加密算法
网上有可逆的加密算法,你百度下吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文