已有一段 JAVA 的 MD5 函数,需要一个可以返回同样结果的 PHP 函数,我写了一个函数,但是有时结果相同,有时不同

2015-01-14 15:30:31 +08:00
 qiayue
(gist 放帖子内容最后了)
目前发现:
signDataWithMD5Key("v2ex.com", "123456") 返回值是 VAUtitqCZKQpYD+5frUNfQ==
md5_by_key("v2ex.com", "123456") 返回值也是 VAUtitqCZKQpYD+5frUNfQ==
也就是说两者结果一致

但是,下面的情况就不一致了
要加密的字符串都是
timestamp=2014-12-19 10:10:10.234&content=gvNK0T++B/sMeylEgUI6AoCV/MZjwcEKA703GgDNrss/iIBBaEcaR5Me4M/6tCH2SPtKBg2dy9NR\r\nXjPFL6Cq4zh6P/jqEO4tMYFQpPGyCiDypB7bDtGVlUkF6i1lhkSSuffbjYuRS5XOnaMR1m7Oet72\r\ndxILjue7qcvusNvT6+eu92ajWIgbkZnWRcStdzjhA3/e9ZrlJBnHrpRjt0l9MC6idJR8s9rsStdf\r\nW65O5+ei+gBOB8tTMpeiuEDFXpvVnzhB1PfurZk6ArNzau6j3p385U873uOiyvhy6TVlyqheuJ3y\r\n/HXpB4k1z3pMr40g5PKlfaJMN52avM2FF2YqUCTme0Wasx9amKqoWrDkD90lveividnq4ooXH/NV\r\nVPX0gYLdEfggXg7rF4q9Na9lmSRxwyd/58BiwRkjk3+MWNCuVw6EctTMtV5BCP4vuTz4iwU5yTYm\r\nh16Zy1QwdZ+oLUoLBI63mgU9sbVFUmGZgTisvhAwKXf25bFhpyBUmS+9
key 都是 123456
Java 的 signDataWithMD5Key 得到的结果是 sde2Y178HtqCR08ldXmfxQ==
php 的 md5_by_key 得到的结果是 V3//cwX5ldkNU73R58GSyQ==

我真正的问题是,该如何写一个跟 java 的 signDataWithMD5Key 得出一样结果的 php 函数

https://gist.github.com/qiayue/71143cd987e3cf4e94e8
2505 次点击
所在节点    问与答
5 条回复
mhycy
2015-01-14 15:41:34 +08:00
转义问题
字符串中有\r\n等字符
在PHP中,使用双引号引用这段文字并输出的结果是sde2Y178HtqCR08ldXmfxQ==与JAVA相符
mhycy
2015-01-14 15:43:59 +08:00
qiayue
2015-01-14 15:46:00 +08:00
我发现了,是因为 \ 的原因,把 \ 替换为其他字符,或者变成双斜杠,结果就变成一样了
qiayue
2015-01-14 15:48:28 +08:00
@mhycy 谢谢,问完了,我就意识到问题在哪里了
mhycy
2015-01-14 15:49:24 +08:00
@qiayue 解决了就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/162099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX