首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cipher.getInstance方法时出现NoSuchAlgorithm异常

使用cipher.getInstance方法时出现NoSuchAlgorithm异常
EN

Stack Overflow用户
提问于 2014-12-04 19:02:05
回答 1查看 2.1K关注 0票数 1

我正在使用cipher java做密码解析逻辑。也就是说,在使用cipher.getInstance("RSA/NONE/NoPadding")获取密码实例时。我得到了以下异常:NoSuchAlgorithm

相同的代码可以在我本地的jboss服务器设置中工作,但在IBM-WAS服务器设置中不能工作。本地jboss服务器和WAS服务器有什么不同吗?

代码语言:javascript
复制
public static String decrypt(String encrypted, KeyPair keys) {
    Cipher dec;
    try {

        dec = Cipher.getInstance("RSA/NONE/NoPadding"); //Exception raised
        dec.init(Cipher.DECRYPT_MODE, keys.getPrivate());

    } catch (GeneralSecurityException e) {
        throw new RuntimeException("RSA algorithm  not supported", e);//Catch block executed
    }
}

日志:

代码语言:javascript
复制
R Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/NoPadding
    at java.lang.Throwable.<init>(Throwable.java:80)
    at javax.crypto.Cipher.getInstance(Unknown Source)
    at com.lsi.utils.JCryptionUtil.decrypt(JCryptionUtil.java:59)
    Caused by: java.security.NoSuchAlgorithmException: Mode: NONE not implemented
    at com.ibm.crypto.provider.RSA.engineSetMode(Unknown Source)
    at javax.crypto.Cipher$a_.a(Unknown Source)

**Jar**

Jce.jar - javax.crypto.Cipher;
bcprov-jdk15-140.jar (External security provider jar)
EN

回答 1

Stack Overflow用户

发布于 2014-12-04 22:32:01

Oracle security provider仅支持ECB模式,而不支持NONE。算法由security providers提供,注册到JVM,它们的名称由提供者创建者提供。

在某些情况下,当您不能事先知道哪些安全提供程序安装在执行环境中时,您可以尝试不同的选项。例如,如下所示:

代码语言:javascript
复制
Cipher cipher = null;
try {
    cipher = Cipher.getInstance("RSA/ECB/NoPadding");
} catch (NoSuchAlgorithmException e) {
    cipher = Cipher.getInstance("RSA/NONE/NoPadding");
}

另一种可能是在启动时检查已安装的提供程序,并做出关于算法的决定

代码语言:javascript
复制
for (Provider provider : Security.getProviders()) {
    for (Provider.Service service : provider.getServices()) {
        System.out.println(provider.getName() + ": " + service.getType() + "." + service.getAlgorithm());
        // check these values and find a best match
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27292366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档