考虑这样一个问题:一切的装备文件都存储在 Git 长途库房,RAR密码破解装备文件中的一些信息又是比较灵敏的。所以,我们需求对这些灵敏信息进行加密处理。首要的加密方法分为两种:一种是同享密钥加 密(对称密钥加密),一种是公开密钥加密(非对称密钥加密)。 1|1对称加解密 Symmetric encryption 对称加密是最快速、最简略的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。 查看加密环境 点击链接观看:查看加密环境视频(获取更多请重视大众号「哈喽沃德先生」) 版别问题 拜访 Config Server:http://localhost:8888/encrypt/status 查看成果假如是:{"description":"No key was installed for encryption service","status":"NO_KEY"} 阐明没有为加密服务装置密钥,也阐明你运用的是较低的 JDK 版别。 比较简略的解决办法:更换高版别 JDK,比如运用最新版的 LTS 版别 JDK-11.0.6。 复杂的解决办法:从 Oracle 官网下载对应 JCE,下载链接:https://www.oracle.com/java/technologies/javase-jce-all-downloads.html 下图赤色框中内容已经满足阐明原因:JDK 9 以及更高版别已顺便策略文件,并在默认情况下启用。 假如你的当时环境有必要运用低版别 JDK,那么请下载对应 JCE 压缩包,下载解压后把 local_policy.jar 和 US_export_policy.jar 文件装置到需求装置 JCE 机器上的 JDK 或 JRE 的 security 目 录下即可。 装备问题 查看成果假如是:{"description":"The encryption algorithm is not strong enough","status":"INVALID"} 阐明服务端未装备加密。 Config Server 创立装备文件,留意有必要叫 bootstrap.yml,装备密钥信息即可。 # 密钥 encrypt: key: example 重启 Config Server 拜访:http://localhost:8888/encrypt/status 成果如下: 加解密演示 点击链接观看:对称加解密视频(获取更多请重视大众号「哈喽沃德先生」) 装备中心服务端 运用 curl 指令拜访 /encrypt 端点对特点值 root 进行加密。反向操作 /decrypt 可解密。 curl http://localhost:8888/encrypt -d root 加密成果:bfb5cf8d7cab63e4b770b76d4e96c3a57d40f7c9df13612cb3134e2f7ed26123 解密 Git 库房 把加密后的数据更新到 Git 长途库房的装备文件中。值得留意的是需求在加密成果前增加 {cipher} 串,假如长途特点源包括加密的内容(以最初的值{cipher}),则将其解密,然后再经过HTTP发 送给客户端。 装备中心客户端 Config Client 操控层增加获取装备信息代码。 package com.example.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RefreshScope @RestController public class ConfigController { @Value("${name}") private String name; @Value("${password}") private String password; @GetMapping("/name") public String getName() { return name; } @GetMapping("/password") public String getPassword() { return password; } } 修正 Config Client 装备文件,重启测验。 spring: cloud: config: name: order-service # 装备文件名称,对应 git 库房中装备文件前半部分 label: master # git 分支 profile: prod # 指定环境 discovery: enabled: true # 敞开 service-id: config-server # 指定装备中心服务端的 service-id # 衡量目标监控与健康查看 management: endpoints: web: base-path: /actuator # 拜访端点根途径,默以为 /actuator exposure: include: '*' # 需求敞开的端点,这儿首要用到的是 refresh 这个端点 #exclude: # 不需求敞开的端点 拜访:http://localhost:9091/password 回来解密后的成果。 1|2非对称加解密 Asymmetric encryption 对称加密和非对称加密的区别 对称加密算法在加密和解密时运用的是同一个密钥。只需拿到密钥,任何人都能破jie。 非对称加密算法需求两个密钥来进行加密和解密,这两个密钥分别是公开密钥(public key 简称公钥)和私有密钥(private key 简称私钥)。在传输过程中,即便攻击者截获了传输的密文,并得 到了公钥,也无法破 jie密文,由于运用专用密钥才能破jie密文。 图片取自图解HTTP一书。 Java-keytool 运用阐明 Keytool 用来办理私钥库房(keystore)和与之相关的X.509证书链(用以验证与私钥对应的公钥),也能够用来办理其他信赖实体。 默认我们都装备了 Java 的环境变量,翻开 CMD 窗口运转以下指令。 # 生成名为 config.keystore 的 keystore 文件,别名为 config,加密算法类型运用 RSA,密钥库口令和密钥口令均为:config keytool -genkeypair -keystore config.keystore -alias config -keyalg RSA -keypass config -storepass config 此刻在我的 D 盘下会生成一个 config.keystore 文件。 加解密演示 点击链接观看:非对称加解密视频(获取更多请重视大众号「哈喽沃德先生」) 装备中心服务端 将 config.keystore 文件增加至 Config Server 项目 resources 目录中。 创立 bootstrap.yml 增加非对称加解密装备。留意:值要跟 CMD 里输入的值对应否则会出错。 # 非对称加解密 encrypt: key-store: location: classpath:config.keystore # keystore 文件存储途径 alias: config # 密钥对别名 password: config # storepass 密钥库房 secret: config # keypass 用来保护所生成密钥对中的私钥 pom.xml 增加防止 maven 过滤文件的装备。 src/main/resourcessrc/main/java**/*.xml**/*.properties**/*.tld**/*.keystorefalse查看加密环境,拜访:http://localhost:8889/encrypt/status 成果如下: 运用 curl 指令拜访 /encrypt 端点对特点值 root 进行加密。反向操作 /decrypt 可解密。 curl http://localhost:8889/encrypt -d root 加密成果: 解密 Git 库房 把加密后的数据更新到 Git 长途库房的装备文件中。值得留意的是需求在加密成果前增加 {cipher} 串,假如长途特点源包括加密的内容(以最初的值{cipher}),则将其解密,然后再经过HTTP发 送给客户端。 装备中心客户端 Config Client 装备文件如下。 spring: cloud: config: name: order-service # 装备文件名称,对应 git 库房中装备文件前半部分 label: master # git 分支 profile: prod # 指定环境 discovery: enabled: true # 敞开 service-id: config-server # 指定装备中心服务端的 service-id # 衡量目标监控与健康查看 management: endpoints: web: base-path: /actuator # 拜访端点根途径,默以为 /actuator exposure: include: '*' # 需求敞开的端点,这儿首要用到的是 refresh 这个端点 #exclude: # 不需求敞开的端点 拜访:http://localhost:9091/password 回来解密后的成果。 2|0装备中心用户安全认证 折腾了大半天终于给我们把加解密讲完了,但是假如你够细心,你会发现此刻的 Config Server 谁都能够拜访,而且直接经过 Config Server 拜访装备文件信息,加密的内容就会解密后直接显示在 浏览器中,这岂不是又白折腾了?当然不是,我们只需求增加用户安全认证即可。 2|1增加依靠 Config Server 增加 security 依靠。org.springframework.bootspring-boot-starter-security2|2装备文件 Config Server 的 application.yml 增加安全认证装备。 spring: # 安全认证 security: user: name: user password: 123456 Config Client 的 bootstrap.yml 增加安全认证装备。 spring: cloud: config: # 安全认证 username: user password: 123456 2|3测验 服务端 Config Server 拜访:http://localhost:8889/order-service-prod.yml 被重定向至登录页。rar破解 输入用户名和暗码后,成果如下: 客户端 Config Client 拜访:http://localhost:9091/password 成果如下: 至此 Config 装备中心一切的知识点就讲解结束了。 本文选用 知识同享「署名-非商业性运用-制止演绎 4.0 世界」答应协议。 我们能够经过 分类 查看更多关于 Spring Cloud 的文章。 您的点赞和转发是对我最大的支撑。 扫码重视 哈喽沃德先生「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~

转载请保留https://blog.csdn.net/dafengit/article/details/106073709

非对称加解密 Asymmetric encryption 对称加密和非对称加密的区别的更多相关文章

  1. SM2的非对称加解密java工具类

    maven依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov- ...

  2. php rsa 非对称加解密类

    <?php header("Content-Type: text/html;charset=utf-8"); /* 生成公钥.私钥对,私钥加密的内容能通过公钥解密(反过来亦可 ...

  3. Optimal asymmetric encryption padding 最优非对称加密填充(OAEP)

    SubtleCrypto.decrypt() - Web APIs | MDN https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypt ...

  4. 网Js RSA加密,后端(Asp.Net)解码(非对称加解密)

    前言 RSA加解密知识自行百度了解决一下 1.取得公钥与私钥方法 JSEncrypt Download 下载后将其发布成网站进入:http://127.0.0.1:3000/demo/index.ht ...

  5. Config非对称加解密

    对称加密和非对称加密区别1. 对称加密对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密.对称加密只有一个秘钥,作为私钥. 常见的对称加密算法:DES,AES,3DES等等. 2. 非对称加密 ...

  6. 加解密算法二:非对称加解密及RSA算法的实现

    加密和解密使用不同的密钥的一类加密算法.这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密):相反,使用密钥B加密数据得到的密文,只有密钥 ...

  7. C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密

    本文源程序下载:http://download.csdn.net/source/2444494 我的项目当中,考虑到安全性,需要为每个客户端分发一个数字证书,同时使用数字证书中的公私钥来进行数据的加解 ...

  8. 【加解密】关于DES加密算法的JAVA加密代码及C#解密代码

    JAVA加密: package webdomain; import java.security.Key; import java.security.spec.AlgorithmParameterSpe ...

  9. 加密算法--->对称加密与非对称加密算举例说明

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA 对称加密例子:des对称加密 des对称加密,对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用 ...

随机推荐

  1. 网络协议学习笔记(五)套接字Socket

    概述 前面学习网络知识的时候写过一篇关于套接字的随笔见<JAVA SOCKET 详解>,现在本人正在系统的学习网络知识,现在除了温故知新之外,在详细的学习记录一下套接字的知识. Socke ...

  2. SparkSQL学习笔记

    概述 冠状病毒来临,宅在家中给国家做贡献之际,写一篇随笔记录SparkSQL的学习笔记,目的有二,一是记录整理之前的知识作为备忘录,二是分享技术,大家共同进步,有问题也希望大家不吝赐教.总体而言,大数 ...

  3. 白话TCP/IP原理

    TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议 ...

  4. 【Kafka】基于Windows环境的Kafka有关环境(scala+zookeeper+kafka+可视化工具)搭建、以及使用.NET环境开发的案例代码与演示

    前言:基于Windows系统下的Kafka环境搭建:以及使用.NET 6环境进行开发简单的生产者与消费者的演示. 一.环境部署 Kafka是使用Java语言和Scala语言开发的,所以需要有对应的Ja ...

  5. Python36 使用Redis 构建分布式爬虫(未完)

    很长时间未更新了,人懒了. 最近有不少的东西,慢慢写吧,最近尝试了一下python 使用Redis 来构建分布式爬虫: 单体爬虫有很多缺点,但是在学习过程中能够学习爬虫的基本理念与运行模式,在后期构建 ...

  6. java-导入import

    1 package face_package; 2 3 import face_packagedemoA.DemoA; 4 import face_packagedemoB.DemoB; 5 //真正 ...

  7. 微信小程序入门教程之三:脚本编程

    这个系列教程的前两篇,介绍了小程序的项目结构和页面样式. 今天,接着往下讲,教大家为小程序加入 JavaScript 脚本,做出动态效果,以及如何跟用户互动.学会了脚本,就能做出复杂的页面了. 本篇的 ...

  8. MySQL技术内幕(一)

    MySQL技术内幕 2. InnoDB存储引擎 2.1 InnoDB存储引擎概述 特点:行锁设计.支持MVCC.支持外键.提供一致性非锁定读 2.2 InnoDB体系架构 2.2.1 后台线程 Inn ...

  9. 002 Linux 文件与目录命令的必会姿势!

    01这些命令真的很重要吗? 文件及目录的路径切换.显示.创建.复制.移动和删除操作的常用姿势,必会!因为这些命令是使用 Linux 系统进行工作的基础,是摆脱小白的第一步,是构建大厦的基石! 发现锅锅 ...

  10. 人口信息普查系统-JavaWeb-一

    建民说要期中考试了,我赶紧翻阅了去年的考试题目,去年的试题是要求做一个人口普查系统.我就试着做了一下,今天主要和大家分享题目要求. 其中考试确实有些难度,用到了许多没有接触过的知识,比如JavaScr ...