gpt4 book ai didi

java - bouncycaSTLe 是否支持 RSA PKCS1-OAEP 填充?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:33 25 4
gpt4 key购买 nike

我正在 Java/Android 中实现加密代码以匹配 iOS 加密。在 iOS 中,使用以下填充方案使用 RSA 进行加密:PKCS1-OAEP

但是,当我尝试使用 PKCS1-OAEP 创建密码时。

Cipher c = Cipher.getInstance("RSA/None/PKCS1-OAEP", "BC");

下面是堆栈跟踪

javax.crypto.NoSuchPaddingException: PKCS1-OAEP unavailable with RSA.
at com.android.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 实现。

最佳答案

第一个答案中的代码确实有效,但不推荐,因为它使用 BouncyCaSTLe 内部类,而不是 JCA 通用接口(interface),使代码 BouncyCaSTLe 特定。例如,这将使切换到 SunJCE 提供者变得困难。

从 1.50 版开始,Bouncy CaSTLe 支持以下 OAEP 填充名称。

  • RSA/NONE/OAEPWithMD5AndMGF1Padding
  • RSA/NONE/OAEPWithSHA1AndMGF1Padding
  • RSA/NONE/OAEPWithSHA224AndMGF1Padding
  • RSA/NONE/OAEPWithSHA256AndMGF1Padding
  • RSA/NONE/OAEPWithSHA384AndMGF1Padding
  • RSA/NONE/OAEPWithSHA512AndMGF1Padding

然后正确的 RSA-OAEP 密码初始化看起来像

Cipher c = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding", "BC");

关于java - bouncycaSTLe 是否支持 RSA PKCS1-OAEP 填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110217/

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