jasypt整合springboot给数据库加密

博客介绍了Spring Boot数据库加密相关操作,包括导入包、配置加密秘钥和开启数据库加密、编写密码加密工具类等。同时指出高版本Jasypt启动报错问题,强调加密解密秘钥要一致,还提醒确保电脑有jce文件,给出下载地址及放置路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

2.配置加密秘钥(application.properties)和开启数据库加密(@EnableEncryptableProperties

#jasypt加密的密匙(正式环境中为确保安全把秘钥写在代码中,和要加密的密码分开)
#jasypt.encryptor.password=pcitc
@EnableAutoConfiguration
@SpringBootApplication
@EnableSwagger2//swagger api
@EnableEncryptableProperties//启动数据库加密
public class Application {
    public static void main(String[] args) {
        try {
        	//代码中配置秘钥
            System.setProperty("jasypt.encryptor.password", "pcitc");
            SpringApplication.run(Application.class);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
  1. 编写密码加密工具类
package util;

import org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI;

public class EncryptorTest {
    public static void main(String[] args) {
        String[] s = new String[2];
        s[0] = "input=ythx";//要加密的字符串,写在=后面
        s[1] = "password=pcitc";//秘钥,和项目中的jasypt.encryptor.password保持一致,不然密码解析会报错org.jasypt.exceptions.EncryptionOperationNotPossibleException
        //s[2] = "algorithm=PBEWithMD5AndDES";//加密算法
        JasyptPBEStringEncryptionCLI.main(s);
    }
}
  1. 其他注意事项
  1. 高版本(2.1.0)的Jasypt启动时会报错,找不到org.springframework.boot.context.propertie.PlaceholdersResolver
  2. 加密解密的秘钥要确保一样
  3. 确保电脑中有 jce(密码扩展无限制权限策略文件)
    如果没有去这里下载:
    https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
    解压后将两个jar文件放到JDK的\jre\lib\security文件夹内
### 将 Jasypt 1.5 集成到 Spring Boot 的方法 为了将 Jasypt 1.5 集成到 Spring Boot 中,需要遵循以下配置过程。此集成允许加密和解密敏感数据(如数据库密码),从而提高应用程序的安全性。 #### 添加依赖项 首先,在 `pom.xml` 文件中添加必要的 Maven 依赖项来引入 Jasypt 和其 Spring 集成功能: ```xml <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.5</version> </dependency> ``` 上述依赖会自动处理 JasyptSpring Boot 的集成[^3]。 #### 配置环境变量或属性文件中的加密密钥 Jasypt 使用一个主密钥 (encryption key) 来加密和解密敏感数据。可以在运行时通过环境变量设置该密钥,或者将其硬编码在配置文件中(不推荐)。以下是两种常见的做法: - **通过环境变量传递:** 运行应用时指定 `-Djasypt.encryptor.password=yourEncryptionKey` 参数。 - **在 application.properties 或 application.yml 中定义:** ```properties jasypt.encryptor.password=yourEncryptionKey ``` 注意:生产环境中应避免直接暴露密钥,建议使用外部化配置管理工具或安全存储服务。 #### 加密敏感数据 安装并配置好 Jasypt 后,可以利用命令行工具或其他方式对敏感数据进行加密。假设要保护数据库连接字符串,则执行如下操作: ```bash encrypt INPUT="myDatabasePassword" PASSWORD="yourEncryptionKey" ``` 得到的结果类似于 `{ENC}...encryptedString...` 形式的值。随后更新至配置文件中替代原始明文字段。 例如修改后的 `application.properties` 可能看起来像这样: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password={ENC}FvNVPKAhEoxuHh79m8ZtzwQWmti2wXg== ``` 这里的关键在于前缀 `{ENC}` 表示后续内容已被加密[^4]。 #### 自动解密机制 当启动 Spring Boot 应用程序时,任何带有 `{ENC}` 前缀的数据都会被透明地解码为实际可用形式而无需额外干预。这意味着开发者只需关注于正常业务逻辑即可。 --- ### 注意事项 尽管 AbstractSecurityWebApplicationInitializer 提供了一种简便的方法用于初始化过滤器链[^1] ,但在现代开发实践中更倾向于采用基于 Java Config 的 Bean 定义模式完成相同功能;至于 SockJS 所需调整的部分则涉及放松某些默认安全性约束以便兼容低版本浏览器行为[^2] 。不过这些主题均独立于当前讨论范围之外——即关于如何实现 Jasypt-Spring Boot 整合的具体细节说明已完成阐述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值