Python pyCrypto PKCS1 OAEP 到 Java 密码

Ers*_*man 5 python java android pycrypto

我从后端获得了一些用于解密一些数据的 Python 代码。在我这边,Android 应用程序,我也需要解密它。

以下是我认为最相关的一些 Python 代码片段。

cipher = PKCS1_OAEP.new(privkey)
Run Code Online (Sandbox Code Playgroud)

这是它来自的模块

from Crypto.Cipher import PKCS1_v1_5
from Crypto.Cipher import PKCS1_OAEP
Run Code Online (Sandbox Code Playgroud)

查看https://www.dlitz.net/software/pycrypto/api/2.6/Crypto.Cipher.PKCS1_OAEP-module.html的文档PKCS1_OAEP.new

然后与 Cipher 的 JavaDoc 进行比较 https://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#Cipher

我推断出这个 Python 算法可以使用 Java Cipher 类表达如下(注意代码是用 Kotlin 编写的)

   val cipher = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding", "BC")
Run Code Online (Sandbox Code Playgroud)

请注意,BC 是提供者。我发现BouncyCastle很受欢迎并且包含在Android框架中

那么错误是什么?

当挑战的答案错误时,后端会返回 404。当我执行 Python 代码(到达相同的端点)时,它起作用了。就POST请求而言,我比较了两者,并且我以正确的方式发送它。

我想知道什么

我使用了正确的算法吗?我正在尝试系统地排除潜在问题,然后再转向另一个问题

请注意,我也尝试过

    val cipher = Cipher.getInstance("RSA/NONE/OAEPPadding", "BC")
Run Code Online (Sandbox Code Playgroud)