试图用密码解密加密的密钥。我正在从我的属性文件中读取这些。解密失败,原因是java.security.NoSuchAlgorithmException: PBEWithMD5AndDES SecretKeyFactory not available。尝试使用使用BasicTextEncryptor作为默认算法的PBEWithMD5AndDES。当我看到提到的异常时,我尝试使用StandardPBEStringEncryptor。我也设置了算法,但仍然面临同样的问题。下面是代码


public class PasswordDecrypt {


    private static char[] password;


static {

    try (InputStream in = PasswordDecrypt.class.getClassLoader().getResourceAsStream("application-unitTest.properties");) {

        Properties props = new Properties();

        props.load(in);

        password = props.getProperty("jasypt.encryptor.password").toCharArray();

    } catch (IOException e) {

        e.printStackTrace();

    }

}


public static String decrypt(String text) {

//    BasicTextEncryptor decryptor = new BasicTextEncryptor();

//    decryptor.setPasswordCharArray(password);

//    String decryptedText = decryptor.decrypt(text);

//    return decryptedText;

       StandardPBEStringEncryptor decryptor = new StandardPBEStringEncryptor();

       decryptor.setPasswordCharArray(password);

       decryptor.setAlgorithm("PBEWithMD5AndDES");  String 

       decryptedText = decryptor.decrypt(text);

       return decryptedText;

}

}

我不确定如何解决这个问题。尝试更改maven依赖项。以下是审判


<dependency>

    <groupId>com.github.ulisesbocchio</groupId>

    <artifactId>jasypt-spring-boot-starter</artifactId>

    <version>2.0.0</version>

</dependency>


<dependency>

  <groupId>com.melloware</groupId>

  <artifactId>jasypt</artifactId>

  <version>1.9.4</version>

</dependency>


<dependency>

    <groupId>org.jasypt</groupId>

    <artifactId>jasypt</artifactId>

    <version>1.9.2</version>

</dependency>


很可能您在这些自定义模块中通过调用SecretKeyFactory对象实例来依赖这个算法(类所在的模块缺少jce.jar,所以将它添加到您的模块或那里)


另外,尝试将提供程序SunJCE添加到您的模块代码中,例如:


java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());