Java 8 121 需要 BouncyCastle?

BouncyCastle required in Java 8 121?

因此,我们最近将 Centos 服务器上的 Java 从 java-1.8.0-openjdk-1.8.0.60-2.b27.el7_1.x86_64 更新为 java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/,并且我们 运行 遇到了通信和 TLS 加密等方面的问题。我们发现了这些问题的解决方案是 java.security 文件没有被新文件覆盖(因为我们在文件中指定了 BouncyCastleProvider)。一旦我们将 java.security.rmpnew 移动到 java.security 的位置,我们的沟通问题就消失了。

我们没有使用 BouncyCastleProvider 更新新的 java.security 文件,但是,我们的应用程序中使用 BouncyCastleProvider 的加密并未中断。我们甚至从 jre/lib/ext 目录中删除了 bcprov-*.jar,重新启动 tomcat,重新启动了整个服务器,但它仍然有效。我检查了发行说明,但没有发现任何提及它的内容。我担心这些更改最终会失效,我们的加密会开始失败。然而,它在没有和 server.I 上的 BouncyCastleProvider 的情况下工作已经检查了发行说明,但没有发现任何提及它的内容。我担心这些更改最终会失效,我们的加密会开始失败。然而它在服务器上没有和 BouncyCastleProvider 的情况下工作。

TLDR;我的问题是 BouncyCastle 现在包含在 Java8 中了吗?我们已经从 java.security 中删除了提供程序,并从 /ext 目录中删除了 bcprov.jar,它仍在工作。我们使用 jasypt v1.9.2 进行加密。

pom.xml

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk15on</artifactId>
  <version>1.52</version>
  <scope>provided</scope>
</dependency>

代码:

StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
String algorithm = "PBEWITHSHA256AND256BITAES-CBC-BC";
String providerName = "BC";

encryptor.setAlgorithm(algorithm);
encryptor.setProviderName(providerName);

String encData = EMPTY_STRING;

try{
  encryptor.setPassword("myPassword");
  encData = encryptor.encrypt(dataToEncrypt);
}

没有。 BouncyCastle 未包含在 OpenJDK 8 或之前的版本中。

最有可能的是,该库捆绑在 Web 应用程序中或存在于 Tomcat 的扩展库之一中。