java - .rsaEncryptionOAEPSHA256算法在iOS上与Java的兼容性

标签 java ios swift cryptography rsa

我正在尝试从 iOS 应用程序与 Java 后端进行通信。使用 .rsaEncryptionOAEPSHA256SecKeyCreateEncryptedData 中的算法对于encryption ,后端显示以下堆栈跟踪:

Caused by: java.lang.SecurityException: Exception thrown while invoking doFinal(byte[]).
    at  ... 101 common frames omitted
Caused by: javax.crypto.BadPaddingException: Decryption error
    at java.base/sun.security.rsa.RSAPadding.unpadOAEP(RSAPadding.java:497)
    at java.base/sun.security.rsa.RSAPadding.unpad(RSAPadding.java:292)
    at java.base/com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:366)
    at java.base/com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:392)
    at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2207)
    ... 103 common frames omitted

Java 后端正在使用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding算法来自 SunJCE提供商。此提供商使用 SHA-1对于MGF1 摘要。但是 iOS 的默认设置是使用 SHA-256 .

  • 如何在 iOS 代码中更改它以使其兼容?

注意:需要说明的是,完全相同的交互目前在 .rsaEncryptionPKCS1 上运行良好在后端使用 RSA/ECB/PKCS1Padding 的 iOS 上在 Java 中。

最佳答案

面对同样的问题,根据我的研究和实验,在 iOS 上支持 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 几乎是不可能的。

类似问题:Encrypt RSA/ECB/OAEPWithSHA-256AndMGF1Padding Swift

但这只解决了算法问题,没有解决填充问题。

关于java - .rsaEncryptionOAEPSHA256算法在iOS上与Java的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63727889/

相关文章:

Java 跨平台 vlcj/libvlc Mac/Windows

java - TestNg 由于 NullPointerException 失败

java - t.page 上的 Freemarker utf-8 编码问题

ios - 使用 Xcode 构建 flutter 应用程序时命令代码符号失败并出现非零退出代码 (errSecInternalComponent)

用户输入时的 Swift 格式文本字段

java - (JAVA) 参数和返回类型错误

ios - 从 iOS 相机捕获视频

javascript - 使用 EvaluateJavaScript 单击按钮意外行为

ios - 移至下一个文本字段后立即检查 emali 验证

ios - 无法从 iCloud 照片库下载视频