我有一个Android项目,并使用RSA加密,它在Android客户端和Java服务器之间正常工作。公钥和私钥是使用android API生成的。现在我想在IOS项目中使用相同的RSA并使用相同的密钥。不幸的是它效果不好。我可以在IOS客户端上加密和解密,它是正确的。在java服务器上解密时,它出错了。 使用kSecPaddingPKCS1进行加密,使用RSA / NONE / OAEPWithSHA1AndMGF1Pad进行解密。
参考: 1。RSA: encrypt in iOS, decrypt in Java 2。RSA implementations in Objective C
任何人都可以帮忙,谢谢你。
答案 0 :(得分:1)
我可以看到(我对密码学的了解有限)你使用不同的算法来加密和解密,但它们不兼容。
使用kSecPaddingPKCS1
更改kSecPaddingOAEP
,作为第一个链接的已接受答案。
答案 1 :(得分:0)
所以你说你可以在iOS中加密和解密cilent,它表示你的公钥和私钥是正确的。因此问题出在cilent和server之间。我在我的项目中做过这个,所以我可以为你指点一点。
1.RSA-key有一些不同的位。像512bit,1024bit。你应该检查一下。在iOS中的加密使用与java服务器中的解密相同的位。
2.您是否使用其他加密。与base64一样,您还要检查是否使用与java服务器相同的样式。
这是一篇相关文章:http://www.jianshu.com/p/db85399e8a76 希望可以帮助你。