PBEWITHSHA256AND128BITAES-CBC-BC在RedHat 6.4上创建java.security.NoSuchAlgorithmException

Saq*_*Ali 8 java cryptography bouncycastle aes

我们有一个用于Bouncy Castle使用PBEWITHSHA256AND128BITAES-CBC-BC算法加密数据的应用程序.它在Ubuntu运行时工作正常OpenJDK 1.7.但是当我们将它移动到RedHat 6.4同时运行时OpenJDK 1.7,我们会得到以下异常:

java.security.NoSuchAlgorithmException

关于可能导致这种情况的任何想法.我们如何添加PBEWITHSHA256AND128BITAES-CBC-BC算法RedHat 6.4

ps应用程序正在运行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));
}
Run Code Online (Sandbox Code Playgroud)

(在RH 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)
Run Code Online (Sandbox Code Playgroud)

(在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)
Run Code Online (Sandbox Code Playgroud)

Juk*_*kka 5

您的类路径中是否有 BouncyCastle 提供程序 JAR(例如 bcprov-jdk15on-149.jar)?

我使用最小的 CentOS 6.4(64 位)安装、OpenJDK 1.7 和 BouncyCastle 1.49 测试了您的场景,没有发现任何问题。

我将 JAR 放置在 JRE lib/ext 目录中:

/usr/lib/jvm/java-1.7.0-openjdk.x86_64/jre/lib/ext
Run Code Online (Sandbox Code Playgroud)