V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xhat
V2EX  ›  问与答

linux 与 php 中 md5 的不同

  •  
  •   xhat · 2014-05-13 01:49:14 +08:00 · 2937 次点击
    这是一个创建于 3846 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要计算linux网卡mac地址的md5值:
    #ifconfig
    eth0 Link encap:Ethernet HWaddr 00:16:3E:00:26:03

    采用以下命令获取linux下mac地址的md5:
    macmd5=`ifconfig eth0 | sed -n '/HWaddr/ s/^.*HWaddr *//pg' |md5sum| cut -d ' ' -f1`
    echo $macmd5
    值为:ca95e8e1242af950e42c27ea07d245d9

    php下计算mac的md5:
    echo md5("00:16:3E:00:26:03")
    值为:3fa425802eec449ad345bbe54998c61b

    查资料显示应该是linux的md5计算有误,似乎与换行符有关,但试过加上\n计算仍然不同,本例如何修正,请懂的同学赐教
    13 条回复    2020-01-02 17:35:33 +08:00
    Lucups
        1
    Lucups  
       2014-05-13 02:24:43 +08:00
    echo 00:16:3E:00:26:03 | md5sum

    --------------------------------------------
    C:\Users\Tony>echo 00:16:3E:00:26:03 | md5sum
    5a2d8a05ff16a61a0cf6016a3ecfeb24 *-
    Lucups
        2
    Lucups  
       2014-05-13 02:31:02 +08:00
    刚忘了去换行
    C:\Users\Tony>echo -n 00:16:3E:00:26:03 | md5sum
    f1a7ccb1786c32014764bdaea52a3db2 *-
    vibbow
        3
    vibbow  
       2014-05-13 02:58:45 +08:00
    感觉PHP应该不会在这种小问题上出错
    那就检查你的linux命令吧,比如说有没有把空格,换行符,制表符,控制字符等等的过滤掉。
    jkeylu
        4
    jkeylu  
       2014-05-13 08:55:04 +08:00
    cygwin
    ➜ ~ echo 00:16:3E:00:26:03 | md5sum
    1fd7443862fd8bf1767ac36e6fa1e254 *-
    ➜ ~ echo -n 00:16:3E:00:26:03 | md5sum
    3fa425802eec449ad345bbe54998c61b *-
    sarices
        5
    sarices  
       2014-05-13 09:00:01 +08:00
    [root@ppp133 public]# echo -n 00:16:3E:00:26:03 | md5sum
    3fa425802eec449ad345bbe54998c61b -
    xhat
        6
    xhat  
    OP
       2014-05-13 09:29:11 +08:00
    @lucups @jkeylu @sarices
    sorry,没说清楚。我明白echo -n可以直接在shell里面显示正确的结果。这里应该不是echo的问题,应该是sed的多余符号我没搞清楚。
    问题是,通过本例中这些管道命令后,如何才能显示正确的结果?
    yangg
        7
    yangg  
       2014-05-13 09:35:44 +08:00   ❤️ 1
    ifconfig eth0 | sed -n '/HWaddr/ s/^.*HWaddr *//pg' | cat -A
    sarices
        8
    sarices  
       2014-05-13 09:37:49 +08:00   ❤️ 1
    @xhat
    其实没那么复杂,一条命令就可以
    cat /sys/class/net/eth0/address|md5sum
    walleL
        9
    walleL  
       2014-05-13 10:40:18 +08:00   ❤️ 1
    `ifconfig eth0 | sed -n '/HWaddr/ s/^.*HWaddr *//pg' | tr -d ' \n' | md5sum`
    去掉空格跟换行
    xhat
        10
    xhat  
    OP
       2014-05-13 10:58:49 +08:00
    thx @walleL
    终于等到正解。

    btw,能解释下,`ifconfig eth0 | sed -n '/HWaddr/ s/^.*HWaddr *//pg'`结果中的空格和换行符的位置么
    walleL
        11
    walleL  
       2014-05-13 12:47:02 +08:00   ❤️ 1
    @xhat
    像 @yangg 的命令里,用 cat -A 就可以看到了
    walleL
        12
    walleL  
       2014-05-13 13:17:01 +08:00
    借楼测试一下通知 XD @walleL
    37661713
        13
    37661713  
       2020-01-02 17:35:33 +08:00
    echo -n 和 php 中的 md5 一样 亲测
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2423 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:45 · PVG 23:45 · LAX 07:45 · JFK 10:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.