非对称加解密 Asymmetric encryption 对称加密和非对称加密的区别

考虑这样一个问题:一切的装备文件都存储在 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

posted @ 2020-05-13 14:49  ITPS  阅读(790)  评论(0编辑  收藏  举报