热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式配置中心———采用对称加密算法和非对称加密算法

对称加密算法1.对称加密算法的介绍对称加密是最快速、最简洁的一种加密方式,加密与解密用的是同样的秘钥。2.加密环境的3种解决方案1.设置秘钥key在配置文件中添加

对称加密算法

1.对称加密算法的介绍
对称加密是最快速、最简洁的一种加密方式,加密与解密用的是同样的秘钥。

2.加密环境的3种解决方案
1.设置秘钥key
在配置文件中添加:
encrypt.key=me
2.配置jce
下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载解压后,把jar文件上传到需要安装jce机器上JDK或JRE的security目录下,覆盖源文件即可。
JDK:将两个jar文件放到%JDK_HOME%\jre\lib\security下
JRE:将两个jar文件放到%JRE_HOME%\lib\security下
3.springcloud的bug我使用的springcloud版本是Dalston.SR1而这个版本的2不行,所以需要注意。我使用的springboot是1.5x。如果你的是2.0x可以换个springcloud版本试下。

3.加密演示
在码云中创建一个文件:
在这里插入图片描述
添加连接数据的内容:
在这里插入图片描述
post请求:
在这里插入图片描述
下面就会生成密码和名称的秘钥,然后我们将名称和密码替换,就这样将你的数据库密码和名称进行加密。
在码云中替换:
在这里插入图片描述
注意的是我们要在前面加上:{cipher}。
我们再重新创建一个product的项目,我复制了之前的项目,只需要能连接数据库就行,目的是验证密码进行了加密。
这是我的新项目结构:
在这里插入图片描述
配置文件代码:

spring.application.name=e-book-config-product
server.port=8084
eureka.client.serviceUrl.defaultZone=http://user:test@eureka2:8762/eureka/,http://user:test@eureka1:8761/eureka/
eureka.instance.perferIpAddress=true
#默认false,这里设置true,表示开启读取配置中心的配置
spring.cloud.config.discovery.enabled=true
#对应eureka中的配置中心serviceId,默认是configserver
spring.cloud.config.discovery.serviceId=config-server

启动server和client端:
查看:
在这里插入图片描述
如果出现说明进行了加密。
然后查看:
在这里插入图片描述
访问成功,说明加密成功。

非对称加密算法

对称和非对称加密的区别:
1.对称加密算法在加密和解密使用的是同一个秘钥
2.非对称加密算法需要两个秘钥来进行加密和解密,这两个秘钥是公开秘钥和私有秘钥。
在这里插入图片描述
从上面的图中我们可以分析出乙总共2个钥匙一个是公钥,一个是私钥。当甲方得到乙的公钥过后利用公钥加密发送给乙方。然后乙得到加密的信息运用自己的私钥再进行解密。这样的好处是:即使有人攻击拦截了密文而且知道了公钥也不能解开密文。只有乙的私钥才能够解开密文。

我们还是利用一个例子来演示,利用分布式配置中心将数据库的名称和密码加密。
服务端项目
服务端的项目基本与我的另外一篇中的服务端项目例子一样,修改的就只有配置文件,所以我这里就只添加配置文件中的代码,大家可以参照这篇博客—>分布式配置中心
配置文件代码如下:

spring.application.name=config-server
server.port=9030
eureka.client.serviceUrl.defaultZone=http://user:test@eureka2:8762/eureka/,http://user:test@eureka1:8761/eureka/
eureka.instance.perferIpAddress=true
#spring.cloud.config.server.git.uri=https://gitee.com/agan_jiagou/config
spring.cloud.config.server.git.uri=https://gitee.com/Xinyangyunyang/config
spring.cloud.config.server.git.username=997355706@qq.com
spring.cloud.config.server.git.password=wen1314520++
#keytool -genkeypair -alias "config-info" -keyalg "RSA" -keystore "encrypt-info.keystore"
# keystore文件的路径
encrypt.key-store.location=classpath:/encrypt-info.keystore
#encrypt.key-store.location=encrypt-info.keystore
# alias 指定密钥对的别名,该别名是公开的;
encrypt.key-store.alias=config-info
# storepass 密钥仓库
encrypt.key-store.password=agan123
# keypass 用来保护所生成密钥对中的私钥
encrypt.key-store.secret=agan456

大家可以看见我们添加了一个encrypt-info.keystore,这就是公钥和私钥。
接下来就是生成这个文件encrypt-info.keystore。
打开命令行输入模式输入:
keytool -genkeypair -alias “config-info” -keyalg “RSA” -keystore “encrypt-info.keystore”
在这里插入图片描述
然后自己随便输入,但是密码和私钥必须要和配置文件中的一样。
这样就会产生一个这个文件:
在这里插入图片描述
复制到这里:
在这里插入图片描述
启动项目测试:
在这里插入图片描述
说明服务安装了秘钥。
生产端项目
首先我们在码云上面创建一个配置文件:
在这里插入图片描述
然后添加:
在这里插入图片描述
基本就是连接数据库的配置。
然后我们复制以前的项目,我这里是修改的里面的product项目大家如果有自己可以连接数据的项目同样可以,这里就是验证数据库加密过后能否成功。
其他没什么修改的就配置文件代码修改了:

spring.application.name=e-book-config-rsa-product
server.port=8084
eureka.client.serviceUrl.defaultZone=http://user:test@eureka2:8762/eureka/,http://user:test@eureka1:8761/eureka/
eureka.instance.perferIpAddress=true
#默认false,这里设置true,表示开启读取配置中心的配置
spring.cloud.config.discovery.enabled=true
#对应eureka中的配置中心serviceId,默认是configserver
spring.cloud.config.discovery.serviceId=config-server

然后利用post请求对数据的名称和密码进行加密:
在这里插入图片描述
得到加密的过后的名称和密码将码云上面的代替掉。
然后启动项目进行测试:
在这里插入图片描述
访问成功,说明加密成功并且服务端完成了解密。
同时可以查看:http://localhost:9030/e-book-config-rsa-product/default
看到自己的数据库名称和密码。
如果大家需要demo或者交流的话可以加我的qq997355706。


推荐阅读
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • PatchODAX8: ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
author-avatar
听海的音_104
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有