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

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

java.security.NoSuchAlgorithmException

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

附:该应用程序在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,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,new EJBException("The algorithm is not found: " + cryptoAlgorithm,e));
} catch (InvalidKeySpecException e) {
    throw BeanHelper.logException(LOG,new EJBException("The key spec is invalid",e));
}

(在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)

(在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)

解决方法

你的类路径中是否有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

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...