Spring Cloud Config对特殊字符加密的处理

之前写过一篇关于配置中心对配置内容加密解密的介绍:《Spring Cloud构建微服务架构:分布式配置中心(加密解密)》。在这篇文章中,存在一个问题:当被加密内容包含一些诸如=+这些特殊字符的时候,使用上篇文章中提到的类似这样的命令curl localhost:7001/encrypt -d去加密和解密的时候,会发现特殊字符丢失的情况。

比如下面这样的情况:

$ curl localhost:7001/encrypt -d eF34+5edo=
a34c76c4ddab706fbcae0848639a8e0ed9d612b0035030542c98997e084a7427
$ curl localhost:7001/decrypt -d a34c76c4ddab706fbcae0848639a8e0ed9d612b0035030542c98997e084a7427
eF34 5edo

可以看到,经过加密解密之后,又一些特殊字符丢失了。由于之前在这里也小坑了一下,所以抽空写出来分享一下,给遇到同样问题的朋友,希望对您有帮助。

问题原因与处理方法

其实关于这个问题的原因在官方文档中是有具体说明的,只能怪自己太过粗心了,具体如下:

If you are testing like this with curl, then use --data-urlencode (instead of -d) or set an explicit Content-Type: text/plain to make sure curl encodes the data correctly when there are special characters (‘+’ is particularly tricky).

所以,在使用curl的时候,正确的姿势应该是:

$ curl localhost:7001/encrypt -H 'Content-Type:text/plain' --data-urlencode "eF34+5edo="
335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033

$ curl localhost:7001/decrypt -H 'Content-Type:text/plain' --data-urlencode "335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033"
eF34+5edo=

那么,如果我们自己写工具来加密解密的时候怎么玩呢?下面举个OkHttp的例子,以供参考:

private String encrypt(String value) {
String url = "http://localhost:7001/encrypt";
Request request = new Request.Builder()
.url(url)
.post(RequestBody.create(MediaType.parse("text/plain"), value.getBytes()))
.build();

Call call = okHttpClient.newCall(request);
Response response = call.execute();
ResponseBody responseBody = response.body();
return responseBody.string();
}

private String decrypt(String value) {
String url = "http://localhost:7001/decrypt";
Request request = new Request.Builder()
.url(url)
.post(RequestBody.create(MediaType.parse("text/plain"), value.getBytes()))
.build();

Call call = okHttpClient.newCall(request);
Response response = call.execute();
ResponseBody responseBody = response.body();
return responseBody.string();
}

以下专题教程也许您会有兴趣

  • Spring Boot基础教程
  • Spring Cloud基础教程

money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

负采样,yyds!

文 | 徐澜玲源 | RUC AI Box引言:负采样方法最初是被用于加速 Skip-Gram 模型的训练,后来被广泛应用于自然语言处理 (NLP)、计算机视觉 (CV) 和推荐系统 (RS) 等领域,在近两年的对比学习研究中也发挥了重要作用。本文聚焦于负采样方法&#x…

图谱实战 | 10 个前沿落地应用案例分享(附下载)

转载公众号 | DataFunSummit导读:知识图谱和图学习都是这两年比较热门的研究方向。近年来,无论是工业界还是学术界,都陆续提出了自己的知识图谱构建平台,知识图谱被广泛应用在推荐、医疗等行业场景;各个公司、各个研究…

LeetCode 1080. 根到叶路径上的不足节点(递归)

1. 题目 给定一棵二叉树的根 root,请你考虑它所有 从根到叶的路径:从根到任何叶的路径。(所谓一个叶子节点,就是一个没有子节点的节点) 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 lim…

Spring Cloud构建微服务架构:分布式配置中心(加密解密)

在微服务架构中,我们通常都会采用DevOps的组织方式来降低因团队间沟通造成的巨大成本,以加速微服务应用的交付能力。这就使得原本由运维团队控制的线上信息将交由微服务所属组织的成员自行维护,其中将会包括大量的敏感信息,比如&a…

112页机器学习数学知识整理!数学基础回顾.pptx

机器学习的基础是数学,数学基础决定了机器学习从业人员的上限,想要学好机器学习,就必须学好数学。这么多数学知识,不管是硕士阶段还是博士阶段的研究生,是没法学完全的,必须有所取舍,黄海广博士…

LeetCode 274. H指数(排序,哈希)

1. 题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他&…

论文浅尝 | 记忆推理:最近邻知识图谱嵌入

笔记整理:孙硕硕,东南大学硕士,研究方向为根因溯源。Citation: Zhang N, Xie X, Chen X, et al. Reasoning Through Memorization: Nearest Neighbor Knowledge Graph Embeddings[J]. arXiv preprint arXiv:2201.05575, 2022.动机大多数知识图…

LeetCode 275. H指数 II(二分查找)

1. 题目 给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列。编写一个方法,计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”(high citations),…

Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。 在使用线程隔离的时候,有个问题是必须要解决的,那就是在某些业务…

如果再这么玩下去,中国的科研就没戏了

文 | 知识分子编者按:今天编发的这篇文章,是某国立研究所所长的内心自白。他的一家之言,道出了许多人不愿意面对的现实——中国科研表面上看起来一片繁荣,实际深藏危机,如果继续跟班式搞科研,中国科研就没戏…

Spring Cloud Feign的文件上传实现

在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本来就来具体说说如何实现。 服务提供方(接收文件) 服务提供方的实现比较简单,就按Spring MVC的正常实现方式即可,比…

论文浅尝 | 开放知识图谱构建必读:封闭域VS开放知识抽取与4大类开放抽取常用方法概述...

转载公众号| 老刘说NLP最近社区抛出一个关于开放知识抽取的话题,也是当前知识图谱构建的一个热点,希望能够介绍相关的工作,而在之前也做过一些工作,借着这个机会,写一篇文章,来跟大家谈谈这个问题。开放知识…

别再双塔了!谷歌提出DSI索引,检索效果吊打双塔,零样本超BM25!

卖萌屋今日学术精选这篇论文展示了信息检索可以用一个Transformer来完成,其中,关于语料库的所有信息都被编码在Transformer模型的参数中。论文标题:Transformer Memory as a Differentiable Search Index链接:https://arxiv.org/a…

LeetCode 71. 简化路径(栈)

1. 题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..&#xff…

我有一段很厉害的代码,不外传的那种

文 | 郭忠明知乎最近在知乎上看到一个问题,叫做“程序员有没有很厉害、不外传的代码”。​好像在这个遍地都是开源项目的时代,啥代码都藏不住。但其实,是有的,而且有不少!很多算法在没有公开前,普通程序员都…

开源开放 | OpenKG发布cnSchema重构版本

cnSchema网站:http://cnschema.openkg.cn/GitHub地址:https://github.com/cnschema/cnSchema开放许可协议:CC 0摘要cnSchema是由OpenKG管理和维护的面向中文知识图谱的Schema参考标准。结合中文语言特点和中文领域特点需求,cnSche…

Spring Cloud构建微服务架构:分布式服务跟踪(抽样收集)【Dalston版】

通过Trace ID和Span ID已经实现了对分布式系统中的请求跟踪,而这些记录的跟踪信息最终会被分析系统收集起来,并用来实现对分布式系统的监控和分析功能,比如:预警延迟过长的请求链路、查询请求链路的调用明细等。此时,我…

LeetCode 229. 求众数 II(摩尔投票)

1. 题目 给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。 示例 1: 输入: [3,2,3] 输出: [3] 示例 2: 输入: [1,1,1,3,3,2,2,2] 输出: [1,2]来源:力扣&#xf…

95后CV工程师晒出工资单:狠补了这个,真香…

许多计算机视觉任务需要对图像进行智能分割,以理解图像中的内容,并使每个部分的分析更加容易。今天的图像分割技术使用计算机视觉深度学习模型来理解图像的每个像素所代表的真实物体,这在十年前是无法想象的。图像分割有助于确定目标之间的关…

论文浅尝 | CAKE:一个用于多视图知识图谱补全的可扩展性常识感知框架

笔记整理:陈子强,天津大学硕士链接:https://aclanthology.org/2022.acl-long.36.pdf动机以往的知识图谱补全仅仅依靠事实级别数据来预测实体之间缺失的关系,这样忽略了有价值的常识性知识。以往的知识图谱嵌入面临无效的负采样和事…