我正在尝试解密使用RSA-OAEP在Golang中加密的字符串。 但出现BadPaddingException:解密错误。 很难找出我想念的是什么。

这是Golang加密方法

和我的java解密方法为

  • 我确保我使用的是相同的密钥对,而不是不同的私钥
  • 确保在加密和解密" SHA256"中使用相同的哈希算法
  • 我可能会丢失一些东西,如果有人需要更多详细信息,请告诉我。 感谢帮助!! 谢谢

    OAEP使用两种哈希算法:一种在标签上(fka参数),另一种在掩码生成函数(MGF1)内;这些可以不同。请参阅rfc8017中的7.1.1和B.2.1。

    我不知道Go代码是否设置一个(或哪个)或同时设置这两者,但是Java对getInstance的作用取决于所使用的提供程序,而该提供程序又至少部分取决于您使用的Java实现。使用。默认情况下,在Sun / Oracle和OpenJDK实现中配置的SunJCE提供程序仅更改标签哈希,将MGF1保持在SHA1。 BouncyCastle提供程序会同时更改两者。我不知道IBM和Android在这里做什么。

    一旦确定(或猜测)Go在做什么,就可以通过添加到.init中调用相应的OAEPParameterSpec和相关的MGF1ParameterSpec来匹配它。

    在node-rsa中大多数将OAEP与MD5和MGF1Padding重叠
    并分解RSA / ECB / OAEPWITHSHA-256ANDMGF1PADDING
    (复制于https://security.stackexchange.com/questions/97548/breaking-down-rsa-ecb-oaepwithsha-256andmgf1padding)