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


推荐阅读
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • ASP.NET 进度条实现详解
    本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
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社区 版权所有