搜索

作者简历和生物 情侣我的爱好有关的文章 - 机器人
我关于移民澳洲的印象。在俄罗斯只。 为解决日常问题的食谱
Linux相关的职位 Windows相关的职位
与软件相关的职位 很多有关硬件信息
不同的工具,你可能会发现有用 关于各种Web技术的文章
一切不符合其余的菜单 RSS订阅本博客

标签云

档案

链接

安德烈Mikhalchuk的博客

English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagRussian flagDanish flagFinnish flagHebrew flag

Technoblog对生活

2008年02月4,为什么* nix的md5sum和PHP的MD5()不匹配?

最近,我试图从* nix中使用md5sum和PHP的MD5()函数计算MD5。 结果可能会让你大吃一惊 - 他们不匹配的情况下,你希望他们匹配。 这里是解释为什么,以及如何解决。

首先,让我们来看看在下面的测试:

> php -r 'echo md5( "eee" );'
d2f2297d6e829cd3493aa7de4416a18f


> echo "eee"|md5sum
5536fc9343e9ab0aca071354084dd3cc -


> echo "eee" > /tmp/e
> md5sum /tmp/e
5536fc9343e9ab0aca071354084dd3cc /tmp/e


> vi /tmp/w
<put eee in the file>
> md5sum /tmp/w
5536fc9343e9ab0aca071354084dd3cc /tmp/w


> php -r 'echo md5( "eee\n" );'
5536fc9343e9ab0aca071354084dd3cc

所以你可以看到它看起来像md5sum的添加了一个换行符到每一个文本,你想获得哈希为年底。 我也陷入这种错觉,但一点点的调查表明,这不是真的。 这里的证明:



> md5sum
eee<Hit Ctrl-D twice here>d2f2297d6e829cd3493aa7de4416a18f

事实是,回声输出添加换行符,所以你必须使用-n标志:

> echo -n "eee"|md5sum
d2f2297d6e829cd3493aa7de4416a18f -

大多数编辑添加换行符到文件的末尾,即使你不希望出现这种情况:

> od -a /tmp/w
0000000 eee nl
0000004

看到最后NL?
md5sum和MD5()所以做工精细,只是要小心你的方式使用它。

这篇文章发表在如何Linux上网络

“为什么* nix的md5sum和PHP的md5()不匹配?”

  1. J说:

    呼应“EEE”> / tmp / E中

    这是将文件的末尾添加新行的行。

    不要'ECHO-N',而不是

  2. 安德烈Mikhalchuk说:

    >尝试`回声-N',而不是
    这正是后建议。 你叫什么?

  3. jussi说:

    感谢!
    CLI的不可见字符(即换行符)是很难发现的。

发表评论

网站地图 (三)2005-2008年安德烈Mikhalchuk