qiayue
V2EX  ›  问与答

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

  •  
  •   qiayue · Jan 14, 2015 · 3064 views
    This topic created in 4199 days ago, the information mentioned may be changed or developed.
    (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 函数

    5 replies    2015-01-14 15:49:24 +08:00
    mhycy
        1
    mhycy  
       Jan 14, 2015   ❤️ 1
    转义问题
    字符串中有\r\n等字符
    在PHP中,使用双引号引用这段文字并输出的结果是sde2Y178HtqCR08ldXmfxQ==与JAVA相符
    qiayue
        3
    qiayue  
    OP
       Jan 14, 2015
    我发现了,是因为 \ 的原因,把 \ 替换为其他字符,或者变成双斜杠,结果就变成一样了
    qiayue
        4
    qiayue  
    OP
       Jan 14, 2015
    @mhycy 谢谢,问完了,我就意识到问题在哪里了
    mhycy
        5
    mhycy  
       Jan 14, 2015
    @qiayue 解决了就好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4109 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 05:22 · PVG 13:22 · LAX 22:22 · JFK 01:22
    ♥ Do have faith in what you're doing.