当前位置: 首页 > 知识库问答 >
问题:

SecretKeyFactory不支持算法“PbeWithHMacsha256andDesede”

荣德厚
2023-03-14

我正在使用Java1.7-Windows7(64位)。我想获得PBEWithHmacSHA256AndDESede算法的SecretKeyFactory实例和Cipher实例。不幸的是,我只有例外

java.security.NoSuchAlgorithmException: Cannot find any provider supporting PBEWithHmacSHA256AndDESede
at javax.crypto.Cipher.getInstance(Cipher.java:524)

你能告诉我你对这个问题的解决方法吗?

共有1个答案

晏望
2023-03-14

该问题的解决方案分为两部分:

首先,您需要调用SecretkeyFactory.getInstance(“pbeWithHMacsha256andDesede”)而不是Cipher.getInstance(“pbeWithHMacsha256andDesede”)(如StackTrace所示)。

其次,您需要找到支持该算法的安全提供商。顺便说一句,SunJCE no bc1.50都不支持它,所以你必须搜索更多的异国变体。

可以使用以下代码检查所有已安装的提供程序及其支持的SecretkeyFactory算法:

// Security.addProvider( new BouncyCastleProvider() );
for ( Provider provider : Security.getProviders() ) {
    System.out.println( provider );
    for ( Provider.Service service : provider.getServices() ) {
        if ( "SecretKeyFactory".equals( service.getType() ) ) {
            System.out.println( service );
        }
    }
}

BC 1.50明确支持具有SHA-256和AES变体的PBE,其名称为PBEwithSHA256and128bitAES-CBC-BC(OID 1.3.6.1.4.1.22554.1.2.1.2.1.2.1.2)、PBEwithSHA256and192bitAES-CBC-BC(OID 1.3.6.1.4.1.22554.1.2.1.2.1.22)和PBEwithSHA256and256bitAES-CBC-BC(OID 1.3.6.1.4.1.22554.1.2.1.2.1.2.1.42)。

它还支持名为PbeWithHMACSHA256SecretkeyFactory算法和OID 2.16.840.1.101.3.4.2.1,但该OID指定了普通的SHA-256哈希函数,这意味着该秘密工厂将只使用哈希而不是哈希+密码。

 类似资料:
  • 本文向大家介绍mllib支持的算法?相关面试题,主要包含被问及mllib支持的算法?时的应答技巧和注意事项,需要的朋友参考一下 大体分为四大类,分类、聚类、回归、协同过滤。  

  • 问题内容: 我正在尝试使用Diamond运算符,但是却收到以下消息: -source 1.5中不支持Diamond运算符(使用-source 7或更高版本来启用Diamond运算符) 它可以在Android的netbeans中修复吗? 问题答案: Android需要Java来源合规性5.0或6.0(Java5 / 6)。开箱即用不支持Java7。这些文章描述了有关如何使用某些Java7功能的技巧:

  • 参考资料:http://www.cppblog.com/sunrise/archive/2012/08/06/186474.html                       http://blog.csdn.net/sunanger_wang/article/details/7887218 我的数据挖掘算法代码:https://github.com/linyiqun/DataMiningAlg

  • 我得到了一个错误: 不支持的密码算法(AES-256-GCM)(运行时错误) 但我似乎有所有的要求: $openssl enc-help 2>&1 grep gcm -AES-128-ECB-AES-128-GCM-AES-128-OFB -AES-192-ECB-AES-192-GCM-AES-192-OFB -AES-256-ECB-AES-256-GCM-AES-256-OFB Ruby解释

  • 我正在尝试使用diamond运算符,但收到以下消息: Source 1.5中不支持diamond运算符(使用Source 7或更高版本启用diamond运算符) 它在Android的netbeans中是可以修复的吗?

  • 我正在尝试通过PingFederate Idp进行身份验证。我正在使用asp。net mvc4,它通过身份和访问工具提供wsfed。看来我很好地恢复了saml断言。Idp确实要求SP上存在并确认证书。我从Idp获得了证书,并将其安装在受信任的根目录中。我在网上用这句话。将其配置为在受信任的根中查找。 这是我从asp.net得到的确切错误: 在此上下文中不支持加密算法http://www.w3.or