【问题标题】:RSA encrypt in ios and decrypt in java server does not workios中的RSA加密和java服务器中的解密不起作用
【发布时间】:2017-01-06 09:40:07
【问题描述】:

我有一个 android 项目并使用了 RSA 加密,它在 android 客户端和 java 服务器之间运行正常。公钥和私钥是使用 android API 生成的。现在我想在 IOS 项目上使用相同的 RSA 并使用相同的密钥。不幸的是,它效果不佳。我可以在IOS客户端上加密和解密,它是正确的。在 java 服务器上解密时,出现错误。 使用 kSecPaddingPKCS1 进行加密,使用 RSA/NONE/OAEPWithSHA1AndMGF1Padding 进行解密。

参考: 1.RSA: encrypt in iOS, decrypt in Java 2.RSA implementations in Objective C

谁能帮忙,谢谢。

【问题讨论】:

  • 如果您发布您正在使用的代码而不是示例的链接,将会很有帮助

标签: java ios rsa


【解决方案1】:

我可以看到(以我有限的密码学知识)您正在使用不同的算法来加密和解密,并且它们不兼容。

将kSecPaddingPKCS1 更改为kSecPaddingOAEP 建议第一个链接的接受答案。

【讨论】:

  • 是的,我已经用 kSecPaddingOAEP 替换了 kSecPaddingPKCS1,但它也不起作用。我可以在我的 App 客户端中加密和解密。 @pedrofb,谢谢
【解决方案2】:

所以你说你可以在iOS cilent中加密和解密,它表示你的公钥和私钥是正确的。因此问题出在客户端和服务器之间。我曾经在我的项目中做过这件事,所以我可以为你指出一点。

1.RSA-key 有一些不同的位。比如512bit、1024bit。你应该检查一下。iOS 中的加密使用与 java 服务器中的解密相同的位。

2.您是否使用额外的加密。与 base64 一样,您还要检查您的 java 服务器是否使用了相同的样式。

这是一篇相关文章:http://www.jianshu.com/p/db85399e8a76 希望能帮到你。

【讨论】:

  • 谢谢。我确信在 IOS 和 Java 之间使用相同的位。我也使用了base64。但是还是不行。
  • 可能问题出在 base64 中。您可以尝试在 base64 中使用其他样式,例如 websafe/NoPadding/Padding 等。在 base64 中使用相同的样式很重要。
猜你喜欢
  • 2016-04-22
  • 2015-01-09
  • 2014-11-24
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 2015-10-29
相关资源
最近更新 更多