所以我們最近從java-1.8.0-openjdk-1.8.0.60-2.b27.el7_1.x86_64
更新的Java我們的Centos的服務器上,以java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/
,我們遇到了通信和TLS加密等方面的問題,我們發現瞭解決這些問題作爲java.security
文件沒有被用新的覆蓋(如我們在文件中指定了BouncyCastleProvider)。一旦我們將java.security.rmpnew
移至java.security
,我們的溝通問題就消失了。Java 8 121中需要BouncyCastle?
但是,我們沒有用BouncyCastleProvider
更新新的java.security
文件,但是我們的應用程序中使用BouncyCastleProvider
的加密沒有中斷。我們甚至從jre/lib/ext
目錄中刪除了bcprov-*.jar
,重新啓動了tomcat,重新啓動了整個服務器,然後仍然有效。我檢查了發行說明,沒有發現任何提及它的內容。我擔心這些更改最終會中斷,我們的加密將開始失敗。但它在服務器上運行WITHOUT和BouncyCastleProvider
。我檢查了發行說明,沒有發現任何提及它的內容。我擔心這些更改最終會中斷,我們的加密將開始失敗。但它在服務器上運行WITHOUT和BouncyCastleProvider
。
TLDR;我的問題是現在包含在Java8中的BouncyCastle?我們已經從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>
代碼:不包括在OpenJDK的8,或以前的版本
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);
}
謝謝你的幫助。它必須被緩存在某個地方,因爲幾個星期後,我們開始失敗。我不知道它在哪裏緩存,因爲我清理了緩存目錄,重啓了所有內容等等,但似乎我們仍然需要它。當我想知道我們如何在沒有它的情況下進行加密時,這是一種解脫。再次感謝 – Niro