一个java的解密方法,如何用php实现啊,跪求大牛~

涉及到别人的代码问题,故删掉了源代码

阅读 1.6k
2 个回答

粗略看了一下,关键就三个东西

  1. RSA
  2. Base64
  3. gzip

把这三个的php库找到就完事了

整理一下这个程序的流程:

  1. 将字符串参数data转为JSON对象,使用变量json接收结果;
  2. json["d_head"]使用BASE64解码,使用变量ecryptData(讲道理应该是“encrypt”吧?)接收结果;
  3. ecryptData使用RSA算法解密,使用变量datas接收;
  4. datas使用gzip解压,使用变量b3接收;
  5. b3byteArray转为T类型的对象,使用变量obj接收;
  6. 返回obj

你要做的是把上面的每一步都分别用php实现,而不是试图同时用php实现上面的所有步骤的总和。实现的时候,你可以将java版的算法的每一步的存储运算结果的变量,jsonecryptDatadatasb3obj打印出来,如果你实现的php版的算法的对于相同的输入,每一步的输出都和java版的一样,那才算是重现成功了。你说你无法解压,那原因可能有两个:

  1. 解压之前的步骤(步骤1、步骤2和步骤3)的结果(jsonecryptDatadatas)不正确;
  2. 你的解压算法和java版的解压算法有差异。

你只要保证,对于相同的输入,你实现的php版本的算法得到的datas和java版本的算法得到的datas完全一致,且你实现的php版本的算法使用的解压算法和java版本的算法使用的解压函数行为完全一致,解压的这一步就绝对不会出错,且解压后得到结果也是正确的。

@Untitled 这位大哥,确实是这样的,他这里有个坑人的地方就是他返回来的两段字符串headbody,分别将headbody base64_decode(),然后只对head做RSA的解密,得到的RsaHeadbody拼接 ,再做gzdecode的解压,我之前是想着先解压,再把两段拼接,没想到,他是这样的,后来我仔细看java的源码才发现的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题