Spring Cloud Config配置文件使用对称加密的方法

 更新时间:2018年05月11日 14:52:08   作者:zxuqian  
Spring Cloud Config提供了两种加密解密方式,一种是对称加密,一种是非对称加密。这篇文章将先展示如何使用对称加密。感兴趣的朋友跟随脚步之家小编一起学习吧

补充

使用Spring Cloud Config加密功能需要下载JCE扩展,用于生成无限长度的密文。链接:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

下载完成之后解压,把得到到两个Jar包复制到$JAVA_HOME\jre\lib\security目录下。

简介

在真实项目环境下,我们不会在配置文件中明文存储密码等机密性文本,以防被窃。Spring Cloud Config提供了加密方法,以使明文文本加密成密文存储在配置文件中。Spring Cloud Config提供了两种加密解密方式,一种是对称加密,一种是非对称加密。这篇文章将先展示如何使用对称加密。

对称加密简介

对称加密即通信双方用同一密钥(key)对文本进行加密和解密。它有两种加密方式:

  • Stream Cipher。对文本进行逐字节或逐字的进行加密。
  • Block Cipher。取一定长度(block size)的字节加密成一个单元,长度不够或者不成block size倍数的用占位符填充。

对称加密是较为简单的一种方式,只要双方都拥有同一key就可以完成文本的加密和解密。不过对称加密的缺点是无法认证来源,即如果Alice和Bob正在通信,Alice使用key把加密后的文本传递给Bob,但是中途被Eve截取到了密文,然后Eve把密文转发给Bob,让Bob误以为Eve就是Alice,然后就会造成数据泄露。

项目源码

Gitee码云

配置configserver

首先我们要先设置一个加密用到的Key,在我们的configserver项目中的bootstrap.yml配置文件中加入如下配置项:

encrypt:
 key: Thisismysecretkey

测试

我们用这个key加密我们的web-client的一个测试项。Spring Cloud Config提供了加密和解密的终端路径,/encrypt和/decrypt。启动configserver,然后我们用/encrypt这个终端加密我们的测试文本:

curl localhost:8888/encrypt -d 12345678

返回的结果是(结果每次都会不一样):

94c1027141add9844ec47f0be13caebb6b38ed1dcf99811b1a5cd2b874c64407

然后在我们的remote config仓库中,修改web-client.yml配置,新增一条配置:

test:
 password: '{cipher}94c1027141add9844ec47f0be13caebb6b38ed1dcf99811b1a5cd2b874c64407'

这里的引号是必须的,然后{cipher}指明了这条数据项为密文。然后我们可以验证一下解密:

curl localhost:8888/decrypt -d 94c1027141add9844ec47f0be13caebb6b38ed1dcf99811b1a5cd2b874c64407

正常情况下会得到我们的12345678字符。然后我们通过url访问web-client.yml配置文件,会得到如下结果:

{  "name": "web-client",
  "profiles": [
    "default"
  ],
  "label": null,
  "version": "6b73c56449acee907fcf37e50892a3afddbf6335",
  "state": null,
  "propertySources": [
    {
      "name": "https://gitee.com/zxuqian/spring-cloud-config-remote/web-client.yml",
      "source": {
        "message": "此条消息来自于远程配置仓库",
        "management.endpoints.web.exposure.include": "*",
        "test.password": "12345678"
      }
    }
  ]
}

会看到解密后的test.password为12345678。

总结

以上所述是小编给大家介绍的Spring Cloud Config配置文件使用对称加密的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Spring Boot外部化配置实战解析

    Spring Boot外部化配置实战解析

    这篇文章主要介绍了Spring Boot外部化配置实战解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 如何集成swagger2构建Restful API

    如何集成swagger2构建Restful API

    这篇文章主要介绍了如何集成swagger2构建Restful API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java实现顺序结构线性列表的函数代码

    java实现顺序结构线性列表的函数代码

    java实现顺序结构线性列表的函数代码。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • java实现小i机器人api接口调用示例

    java实现小i机器人api接口调用示例

    这篇文章主要介绍了java实现小i机器人api接口调用示例,需要的朋友可以参考下
    2014-04-04
  • Java实现非对称加密的三种方法

    Java实现非对称加密的三种方法

    本文主要介绍了Java实现非对称加密的三种方法,主要包括非对称加密算法--DH(密钥交换),非对称加密算法--RSA,非对称加密算法--EIGamal,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Spring Boot集成Redis实战操作功能

    Spring Boot集成Redis实战操作功能

    这篇文章主要介绍了Spring Boot集成Redis实战操作,包括如何集成redis以及redis的一些优点,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 详解如何开发一个MyBatis通用Mapper的轮子

    详解如何开发一个MyBatis通用Mapper的轮子

    因为一些原因,例如:通用数据权限控制、MyBatis-Plus好像不支持联合主键等,我们不得不开发一个MyBatis通用Mapper的轮子。文中的示例代码讲解详细,需要的可以参考一下
    2022-12-12
  • Java中BigDecimal比较大小的3种方法(​​compareTo()、​​equals()​​和​​compareTo()​​)

    Java中BigDecimal比较大小的3种方法(​​compareTo()、​​equals()​​和​​compar

    这篇文章主要给大家介绍了关于Java中BigDecimal比较大小的3种方法,方法分别是​​compareTo()、​​equals()​​和​​compareTo()​​,在Java中使用BigDecimal类来进行精确的数值计算,需要的朋友可以参考下
    2023-11-11
  • MyBatis批量插入几千条数据为何慎用foreach

    MyBatis批量插入几千条数据为何慎用foreach

    这篇文章主要介绍了MyBatis批量插入几千条数据为何慎用foreach问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java List分页功能实现代码实例

    Java List分页功能实现代码实例

    这篇文章主要介绍了Java List分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论