热门标签 | 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。


推荐阅读
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
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社区 版权所有