• Config非对称加解密


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

    2. 非对称加密
    非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。
    常见的非对称加密算法:RSA,ECC

    3. 区别
    对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.

    例如针对C/S模型,
    1. 服务端计算出一对秘钥pub/pri。将私钥保密,将公钥公开。
    2. 客户端请求服务端时,拿到服务端的公钥pub。
    3. 客户端通过AES计算出一个对称加密的秘钥X。 然后使用pub将X进行加密。
    4. 客户端将加密后的密文发送给服务端。服务端通过pri解密获得X。
    5. 然后两边的通讯内容就通过对称密钥X以对称加密算法来加解密。

    1、安装JCE
    默认情况下我们的JRE自带了JCE,但是默认是一个有限长度的版本,需要到oracle官网下载一个不限长度的JCE。

    JCE下载地址
    https://www.oracle.com/technetwork/java/javase/downloads/jce-all-download-5170447.html

    2、安装JCE
    下载JCE并解压(eg:jce_policy-8.zip),按照其中的README.txt的说明安装。

    JCE的安装非常简单,其实就是将JDK/jre/lib/security目录中的两个jar文件(local_policy.jar、US_export_policy.jar)替换为压缩包中的jar文件。

    3、使用jdk自带的keytool生成keystore文件并拷贝到resource文件夹

    keytool -genkeypair -alias mydevkey -keyalg RSA  -keystore d:/configserver.keystore

    操作完毕,在d盘可以看到configserver.keystore文件。

    4、在config server服务的bootstrap.yml文件中配置key-store

    #博客:https://blog.csdn.net/u014296316/article/details/80881974
    #http://localhost:6063/encrypt/status  验证加密解密功能是否正常
    #http://localhost:6063/encrypt 只允许post请求
    #http://localhost:6063/decrypt 只允许post请求
    encrypt: 
      key-store: 
        location: configserver.keystore
        alias: mydevkey
        password: 123456
        secret: 123456

     

    5、访问 http://localhost:6063/encrypt/status 验证加密解密功能是否正常

    6、访问/encrypt和/decrypt进行加密解密
    http://localhost:6063/encrypt 只允许post请求

    http://localhost:6063/decrypt 只允许post请求

    7、配置文件中使用{cipher}开头标识加密数据

    8、在Config Client服务获取加密数据

    /**
     * 这边的@RefreshScope注解不能少,否则即使调用/refresh,配置也不会刷新
     */
    @RestController
    @RefreshScope
    public class ConfigClientController {
    
        @Value("${env}")
        private String env;
        
        @Value("${password}")
        private String password;
        
        @Value("${username}")
        private String username;
    
        @GetMapping("/config/profile")
        public String hello() {
            return this.env+","+this.password+","+this.username;
        }
    }

     

    http://localhost:6062/config/profile 查看效果

  • 相关阅读:
    编程思想之多线程与多进程——以操作系统的角度述说线程与进程
    git 版本回退
    git 版本回退
    求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???
    求助帖:android开发初期:为什么我在活动二设置的singInstance模式跑到活动三去了???
    Android初学:Gradle 'HelloWorld' project refresh failed
    处理日期时间方法总结
    解决error104 connection reset by peer;socket error问题
    'utf8' codec can't decode byte 0xd1 in position 931: invalid continuation byte解决方法
    scrapy学习笔记
  • 原文地址:https://www.cnblogs.com/linjiqin/p/10338840.html
Copyright © 2020-2023  润新知