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


推荐阅读
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 方法:1 配置数据库basediros.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径appFlask(__name__ ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • jQuery HooRay:一款自创的实用 jQuery 工具插件
    这款插件主要由作者在工作中积累的常用功能开发而成,旨在解决现有插件间的冲突及浏览器兼容性问题。通过整合和优化现有插件,确保其稳定性和高效性。 ... [详细]
  • 本文介绍了Linux系统中的文件IO操作,包括文件描述符、基本文件操作函数以及目录操作。详细解释了各个函数的参数和返回值,并提供了代码示例。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 解决SVN图标显示异常问题的综合指南
    本文详细探讨了SVN图标无法正常显示的问题,并提供了多种有效的解决方案,涵盖不同环境下的具体操作步骤。通过本文,您将了解如何排查和修复这些常见的SVN图标显示故障。 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 本文详细解析了Java中hashCode()和equals()方法的实现原理及其在哈希表结构中的应用,探讨了两者之间的关系及其实现时需要注意的问题。 ... [详细]
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社区 版权所有