日常错误-Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException: null

大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正

如果你从本文 get 到有用的干货知识,请帮忙点个赞呗,据说点赞的运气会更好

SpringBoot学习时踩过的坑

今天学习springboot提供的一个加密工具(jasypt-spring-boot-starter)时,一切配置就绪启动springboot的入口类(也就是带@SpringBootApplication的类)时出现了下面的报错:

Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException: null
Caused by: com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decrypt: ENC(密文)

加密代码如下:

package com.xingyu.util;

import org.jasypt.util.text.BasicTextEncryptor;

import java.util.UUID;

public class JasyptUtil {

    private static final String salt = UUID.randomUUID().toString();

    public static void main(String[] args) {
        //获取加密工具类对象
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        //设置加盐的盐
        encryptor.setPassword("123456");
        //加密
        String name = encryptor.encrypt("root");
        String password = encryptor.encrypt("rootc");
        System.out.println(name);
        System.out.println(password);
//        System.out.println("========================");
//        System.out.println(encryptor.decrypt(name));
//        System.out.println(encryptor.decrypt(password));

        //Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException: null
        //Caused by: com.ulisesbocchio.jasyptspringboot.exception.DecryptionException: Unable to decrypt: ENC(
        //使用jasypt-spring-boot-starter.3.0.3.jar加密工具时启动springboot报错
        //改为2.0.0即可 ENC(加密后的结果)     3.0.3版本的解密方式不太一样 可能不通过ENC的方式
    }
}

下面配上我的application.yml文件(springboot启动时默认加载,与application.properties文件同级的情况下,yml优先级大于properties,出现不同的配置采用yml的,不同的配置互补)的内容

#server:
#  port: 8090


#配置信息
#告知加密工具加的什么盐
jasypt:
  encryptor:
    password: 123456

info:
  name: ENC(密文)
  password: ENC(密文)

#推荐使用结构化的配置
food:
  ice: 冰淇淋
  price: 0.8
  #数组写法
  tastes:
    - 奥利奥
    - 蓝莓
    - 草莓

#支持流式语法
#food: {ice: 冰淇淋, price: 0.9}

#分文档写法(即在一个yml文件中可以形成多个文档)---作为文档开头 ...作为文档结尾
spring:
  profiles:
    active: dev

---
#开发环境
spring:
  config:
    activate:
      on-profile: dev

server:
  port: 8090
...
---
#生产环境
spring:
  config:
    activate:
      on-profile: produce

server:
  port: 8091
...

在网上搜了几个解决办法

1. 有说jdk8与jasypt-spring-boot-starter不能一块用的 https://github.com/ulisesbocchio/jasypt-spring-boot/issues/32.
2. 有说内网下maven私服不会级联另外两个jar包 https://blog.csdn.net/moneyshi/article/details/108628693.

最后发现我这个问题不属于其中任何一种,而是版本问题,当我使用jasypt-spring-boot-starter的3.0.3版本的加密工具时启动springboot报错改为2.0.0即可,application.yml中配置形式用ENC(加密后的结果) 我猜3.0.3版本的解密方式不太一样 可能不通过ENC的方式

你可能感兴趣的:(日常错误,spring,boot)