IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA项目中对配置文件敏感信息进行加密 -> 正文阅读

[Java知识库]JAVA项目中对配置文件敏感信息进行加密

背景介绍:在我们的配置文件中有一些信息比较敏感,明文显示,安全性就比较低一些,比如数据库的用户名与密码,对此本文我们以SpringBoot项目为例将对用户名与密码进行加密!

案例

  1. 引入包
<dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>2.1.0</version>
</dependency>

jasypt由一个国外大神写了一个springboot下的工具包,用来加密配置文件中的信息。

  1. application.properties或application.yml配置加/解的密码
# jasypt加密密钥
jasypt:
  encryptor:
    password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
  1. 在写的测试用例中生成加密后的秘钥
/**
 * @Auther: chenmy
 * @Date: 2022/02/25/16:11
 * @Description: 如有不懂关注公众号-> 码农明明 
 *               获取整个项目源码,提出疑问
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class SuccessTest {
    @Autowired
    private StringEncryptor encryptor;

    @Test
    public void getPass() {
        String url = encryptor.encrypt("jdbc:mysql://127.0.0.1:3306/kkb?autoReconnect=true&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
        String name = encryptor.encrypt("root");
        String password = encryptor.encrypt("cmyroot");
        System.out.println("database url: " + url);
        System.out.println("database name: " + name);
        System.out.println("database password: " + password);
        Assert.assertTrue(url.length() > 0);
        Assert.assertTrue(name.length() > 0);
        Assert.assertTrue(password.length() > 0);
    }
}

下面是输出加密字符串:

database url: 2UdKxOVXnPB6ZfsUOUEIFaEMLVzJnOzHKFOuacjdrImiNSuMGbWbR5G/0viQmtHvimD2CutZ/y7bLiOx3ewH/O3h6jGztEzNx/m1i0aP9CFTOuYkPvf6NFnbA0zbU8L4a6QsFdVLG5IFBWz+41sBIKCyZBY4eSnj92lvYftTiFA=
database name: qKVR5YJQIrG3iytBWFyYEg==
database password: 2D2yCkM3ws7CLL7VXxs0aA==
  1. 将加密后的字符串替换原明文
spring:
  jpa:
    #指定是否在spring启动时创建表,默认false
    generate-ddl: true
    show-sql: true
    #指定应用重启后不重新更新表内容
    hibernate:
      ddl-auto: none
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: ENC(hA3JGlwMIqw8oGU9SqU7lxPuQT3qGL65gMhy77YV2fv0OeMe3pOW1rwx5M9ekWLoIOPKyiuIDBobtW8Y37/LwJ7d5NJtpBnhUwIK9Q6r3mZbispO9mKzkZxcxcVMp6kEmCDWD4TO93DO6bXjqSyLWn8zM0ge/9n2zOAgz+bz/bM=)
    username: ENC(ddKnhp/x0Jck5A1b/TxLVA==)
    password: ENC(hEuvGUnB6SBhT3jkVv8caA==)
#注意: 上面的 ENC() 是固定写法.

# jasypt加密密钥
jasypt:
  encryptor:
    password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7

明文密码加密成功!
如有不懂或者疑问请关注公众号:码农明明
即可获取项目源码并提出疑问
在这里插入图片描述

附言

部署时配置salt(盐)值

为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值:

java -jar xxx.jar  -Djasypt.encryptor.password=Y6M9fAJQdU7jNp5MW

或者在服务器的环境变量里配置,进一步提高安全性.

打开/etc/profile文件

vim /etc/profile

profile文件末尾插入salt(盐)变量

export JASYPT_PASSWORD = Y6M9fAJQdU7jNp5MW

编译,使配置文件生效

source /etc/profile

运行

java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:14:49  更:2022-02-28 15:19:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:01:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码