我在Oracle的Java标准加密提供程序中发现了困难的方法
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
使用以SHA-1实例化的MFG1;SHA-256仅用于对标签进行哈希处理(实际上是空的)。我发现在MFG1中实际使用SHA-256的唯一解决方案(得到该答案和注释的帮助)是使用以下替代形式Cipher.init
:
cipher.init(Cipher.DECRYPT_MODE, privKey, new OAEPParameterSpec(
"SHA-256", "MGF1", MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT
));
问:有没有转变是Cipher.getInstance
会认识到,与类似的效果"RSA/ECB/OAEPWithSHA-256AndMGF1Padding"
,除了与MGF1使用SHA-256?
不,没有。
Java是开源的。如果不确定,则可以查看OpenJDK的资源。
在它的init
方法中com.sun.crypto.provider.RSACipher
读取:
spec = new OAEPParameterSpec(oaepHashAlgorithm, "MGF1",
MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT);
我已经检查了OpenJDK的Java 8 update 60。如您所见,您需要使用算法参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句