资讯专栏INFORMATION COLUMN

Spring Boot配置文件密码加密

IT那活儿 / 2438人阅读
Spring Boot配置文件密码加密
一. 使用背景

对于SpringBoot项目,项目中依赖的配置,例如数据库的配置信息,默认都是明文保存在配置文件中。这种方式存在密码泄露风险,在企业的安全扫描中也通过不了,所以需要对配置进行加密处理。今天介绍一种可以快速集成到SpringBoot的加解密库Jasypt。

Jasypt是一个Java库,允许开发人员以简单的方式添加基本加密功能,而无需深入研究加密原理。利用它可以实现高安全性的,基于标准的加密技术。其实现原理是实现了 ApplicationContextInitializer 接口,重写了获取环境变量的方法,在容器初始化时对配置文件中的属性进行判断,若包含前后缀SNC()表示是加密属性值,则进行解密并返回。


二. 使用方式

1. 在pom文件中引入依赖;

2. 在application.yml中配置加密所需的秘钥以及加密属性的前后缀;

3. 生成加密密码;

方式一:通过Java代码生成

/**
     * 加密
     *
     * @param plaintext 明文密码
     * @return
     */

    public static String encrypt(String plaintext) {
        //加密工具
     StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm(ALGORITHM);
        //生成秘钥的公钥
        config.setPassword(PASSWORD);
        //应用配置
encryptor.setConfig(config);
        //加密
        String ciphertext = encryptor.encrypt(plaintext);
        return ciphertext;
}

/**
     * 解密
     *
     * @param ciphertext 待解密秘钥
     * @return
     */

    public static String decrypt(String ciphertext) {
        //加密工具
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        //加密配置
        EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
        config.setAlgorithm(ALGORITHM);
        //生成秘钥的公钥
        config.setPassword(PASSWORD);
        //应用配置
encryptor.setConfig(config);
        //解密
        String pText = encryptor.decrypt(ciphertext);
        return pText;
    }

方式二:通过执行命令生成

-- 加密
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=shsnc!@# password=shsnc123456 algorithm=PBEWithMD5AndDES

-- 解密
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=z4xP29fuY4wF2AJqp1NnoGJxj password=shsnc123456 algorithm=PBEWithMD5AndDES

4. 替换application.properties需要加密的明文密码为SNC(加密字符串)。

例如:

spring.datasource.password=SNC(CfZnyjpFubhzPzSZPDxo9tSdVRUmqkqW)
END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129836.html

相关文章

  • SpringBoot 入门简介

    摘要:这里使用的是数据库启动类上加上注解在启动类中添加对包扫描扫描多个包下的可以有以下几种方法扫描会自动加载相关配置,数据源就会自动注入到中,会自动注入到中,可以直接使用。有配置文件下的使用扫描多个包下的可以有以下几种方法扫描 Spring-Boot 学习笔记 1 Spring-Boot 介绍 1.1 什么是Spring-Boot Spring-Boot是由Pivotal团队提供的全新框架...

    chuyao 评论0 收藏0
  • Spring Cloud 参考文档(Spring Cloud Config Server)

    摘要:,这是标记配置文件集版本化的服务器端特性。要配置对称密钥,需要将设置为秘密字符串或使用环境变量将其排除在纯文本配置文件之外。 Spring Cloud Config Server Spring Cloud Config Server为外部配置提供基于HTTP资源的API(名称—值对或等效的YAML内容),通过使用@EnableConfigServer注解,服务器可嵌入Spring Bo...

    harryhappy 评论0 收藏0
  • Spring Security 使用总结

    摘要:暑假的时候在学习了并成功运用到了项目中。这是提供的一个安全权限控制框架,可以根据使用者的需要定制相关的角色身份和身份所具有的权限,完成黑名单操作拦截无权限的操作。用户通过登陆操作获得我们返回的并保存在本地。 暑假的时候在学习了 Spring Security 并成功运用到了项目中。 在实践中摸索出了一套结合 json + jwt(json web token) + Spring Boo...

    zoomdong 评论0 收藏0
  • Spring Security 使用总结

    摘要:暑假的时候在学习了并成功运用到了项目中。这是提供的一个安全权限控制框架,可以根据使用者的需要定制相关的角色身份和身份所具有的权限,完成黑名单操作拦截无权限的操作。用户通过登陆操作获得我们返回的并保存在本地。 暑假的时候在学习了 Spring Security 并成功运用到了项目中。 在实践中摸索出了一套结合 json + jwt(json web token) + Spring Boo...

    tianyu 评论0 收藏0
  • 使用Jasypt对SpringBoot配置文件加密

    摘要:所以这里我们就需要对数据库的用户名和密码进行加密,这也是本文的由来。本文采用对配置文件加密的相关方法,其实呢,也还有其他方案,具体的会在后面的相关文章中说明。 前言 在日前安全形势越来越严重的情况下,让我意识到在项目中存在一个我们经常忽略的漏洞,那就是我们的项目的配置文件中配置信息的安全,尤其是数据库连接的用户名和密码的安全。所以这里我们就需要对数据库的用户名和密码进行加密,这也是本文...

    codergarden 评论0 收藏0
  • 10 种保护 Spring Boot 应用的绝佳方法

    摘要:截至年月日,将网站标记为不安全。管理密码使用密码哈希以纯文本格式存储密码是最糟糕的事情之一。是中密码哈希的主要接口,如下所示提供了几种实现,最受欢迎的是和。 Spring Boot大大简化了Spring应用程序的开发。它的自动配置和启动依赖大大减少了开始一个应用所需的代码和配置量,如果你已经习惯了Spring和大量XML配置,Spring Boot无疑是一股清新的空气。 Spring ...

    Jeffrrey 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<