java bouncycastle是否支持RSA PKCS1OAEP填充?
我正在Java/Android中实现加密代码,以匹配iOS加密。在iOS中,使用RSA加密时使用以下填充方案:PKCS1-OAEP
然而,当我尝试用PKCS1-OAEP创建密码时
Cipher c = Cipher.getInstance("RSA/None/PKCS1-OAEP", "BC");
下面是stacktrace
javax.crypto.NoSuchPaddingException: PKCS1-OAEP unavailable with RSA.
at com.安卓.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi.engineSetPadding(CipherSpi.java:240)
at javax.crypto.Cipher.getCipher(Cipher.java:324)
at javax.crypto.Cipher.getInstance(Cipher.java:237)
也许这个RSA/None/PKCS1-OAEP
不正确?但无法找到任何明确的答案来说明PKCS1-OAEP不受支持,也无法找到正确的定义方式
我正在使用spongycastle库,所以有完整的bouncycastle实现
# 1 楼答案
第一个答案中的代码确实有效,但不推荐使用,因为它使用BouncyCastle内部类,而不是JCA通用接口,使代码特定于BouncyCastle。例如,这将使切换到SunJCE提供商变得困难
从1.50版开始,Bouncy Castle支持以下OAEP填充名称
然后正确的RSA-OAEP密码初始化如下
# 2 楼答案
如果其他人遇到类似的加密/填充问题,下面的代码可以工作