【发布时间】:2018-09-28 06:29:45
【问题描述】:
我们有一个应用程序使用Bouncy Castle 使用PBEWITHSHA256AND128BITAES-CBC-BC 算法加密数据。它在运行OpenJDK 1.7 的Ubuntu 上运行良好。但是当我们将它移动到RedHat 6.4 也运行OpenJDK 1.7 时,我们会得到以下异常:
java.security.NoSuchAlgorithmException
关于可能导致此问题的任何想法。我们如何将PBEWITHSHA256AND128BITAES-CBC-BC算法添加到RedHat 6.4?
p.s.应用程序正在JBoss 中运行。
private String cryptoAlgorithm = "PBEWITHSHA256AND128BITAES-CBC-BC";
Security.addProvider(new BouncyCastleProvider());
// load passPhrase from configured external file to char array.
char[] passPhrase = null;
try {
passPhrase = loadPassPhrase(passPhraseFile);
} catch (FileNotFoundException e) {
throw BeanHelper.logException(LOG, methodName, new EJBException("The file not found: " + passPhraseFile, e));
} catch (IOException e) {
throw BeanHelper.logException(LOG, methodName, new EJBException("Error in reading file: " + passPhraseFile, e));
}
PBEKeySpec pbeKeySpec = new PBEKeySpec(passPhrase);
try {
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(cryptoAlgorithm);
SecretKey newSecretKey = secretKeyFactory.generateSecret(pbeKeySpec);
return newSecretKey;
} catch (NoSuchAlgorithmException e) {
throw BeanHelper.logException(LOG, methodName, new EJBException("The algorithm is not found: " + cryptoAlgorithm, e));
} catch (InvalidKeySpecException e) {
throw BeanHelper.logException(LOG, methodName, new EJBException("The key spec is invalid", e));
}
(相对湿度 6.4)
#java -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
(在 Ubuntu 12.04 上)
#java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
【问题讨论】:
-
您的 RedHat 代码可以找到其他 Bouncy Castle 代码吗?
-
是的,我可以在 redhat 上使用“PBEWithMD5AndDES”和充气城堡。
-
是字母大小写的问题吗?你能找到
PBEWithSHA256And128BITAES-CBC-BC。 BC 手册是怎么说的? -
您能否比较两个
$jre-home\lib\security目录,如果它们看起来相同,*_policy jar 的内容? -
能否请您提供完整的堆栈跟踪信息?
标签: java cryptography aes bouncycastle