gpt4 book ai didi

java - SecretKeyFactory不支持算法 "PBEWithHmacSHA256AndDESede"

转载 作者:行者123 更新时间:2023-11-30 03:50:46 24 4
gpt4 key购买 nike

我正在开发 Java 1.7 - Window 7(64 位)。我想获取 PBEWithHmacSHA256AndDESede 算法的 SecretKeyFactory 实例和 Cipher 实例。不幸的是,我只有异常(exception)

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

您能分享一下您解决这个问题的方法吗?

最佳答案

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

首先,您需要调用SecretKeyFactory.getInstance("PBEWithHmacSHA256AndDESede")而不是Cipher.getInstance("PBEWithHmacSHA256AndDESede") ,如您的堆栈跟踪所示。

其次,您需要找到支持该算法的安全提供商。顺便说一句,SunJCE 和 BC 1.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),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.42)。

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

关于java - SecretKeyFactory不支持算法 "PBEWithHmacSHA256AndDESede",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24505283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com