jasypt加密后编译不通过 启动报错

报错


Failed to bind properties under ‘spring.datasource.druid.password’ to java.lang.String
Failed to bind properties under ‘spring.datasource.druid.username’ to java.lang.String
Reason: Invalid version number: Version number may be negative or greater than 255

报错详情如下:

Description:

Failed to bind properties under 'spring.datasource.druid.password' to java.lang.String:

    Reason: Invalid version number: Version number may be negative or greater than 255

Action:

Update your application's configuration

引入的是jasypt-spring-boot-starter-3.0.4版本加密

<dependency>
     <groupId>com.github.ulisesbocchio</groupId>
     <artifactId>jasypt-spring-boot-starter</artifactId>
     <version>3.0.4</version>
</dependency>

看很多博客讲降低jasypt版本,降成2.1.X也可以解决

升级icu4j版本即可解决


如没有icu4j则加上

<dependency>
   <groupId>com.ibm.icu</groupId>
   <artifactId>icu4j</artifactId>
   <version>71.1</version>
   <scope>provided</scope>
   <optional>true</optional>
</dependency>

经测 icu4j版本也可以用68.2版本或者67.1版本

此外,jasypt3.0.4版本默认为加密算法为PBEWITHHMACSHA512ANDAES_256

jasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator
jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256
默认值
jasypt.encryptor.algorithmPBEWITHHMACSHA512ANDAES_256
jasypt.encryptor.salt-generator-classnameorg.jasypt.salt.RandomSaltGenerator
jasypt.encryptor.iv-generator-classnameorg.jasypt.iv.RandomIvGenerator
jasypt.encryptor.string-output-typebase64

参考

  1. jasypt issues #33
  2. 升级JDK后Jasypt加密停止工作
`applicationContext.xml` 是Spring框架中用于配置Bean以及相关依赖注入的配置文件。有时候,为了安全起见,我们会将数据库的配置信息如用户名、密码等敏感信息使用jasyptJava Simplified Encryption)加密。在Spring启动时,通过配置一个Bean来实现加密信息的解密。 以下是一个简单的例子说明如何在 `applicationContext.xml` 中配置解密: ```xml <!-- 导入jasypt加密库 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>版本号</version> </dependency> <!-- 配置jasypt加密Bean,用于解密 --> <bean id="configurationEncryptor" class="com.github.ulisesbocchio.jasyptspringboot.EncryptablePropertyDetectorBeanPostProcessor"> <!-- 配置jasypt加密算法的属性名前缀 --> <property name="encryptablePropertyDetector" ref="encryptablePropertyDetector" /> </bean> <bean id="encryptablePropertyDetector" class="com.github.ulisesbocchio.jasyptspringboot.EncryptablePropertyDetector"> <!-- 配置jasypt加密算法的属性名前缀 --> <property name="prefix" value="ENC(" /> <property name="suffix" value=")" /> </bean> <!-- 配置数据源,其中的username和password加密后的内容 --> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> <property name="username" value="ENC(加密后的用户名)"/> <property name="password" value="ENC(加密后的密码)"/> <!-- 其他配置 --> </bean> ``` 在上面的配置中,`EncryptablePropertyDetectorBeanPostProcessor` 和 `EncryptablePropertyDetector` 的作用是识别以 `ENC(` 开始,并以 `)` 结尾的字符串,并对其进行解密处理。这样在Spring容器启动时,它会自动将配置的加密信息解密成明文,然后应用到相应的Bean中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值